diff options
777 files changed, 47150 insertions, 22798 deletions
diff --git a/apps/files/admin.php b/apps/files/admin.php index f747f8645f6..02c3147dba5 100644 --- a/apps/files/admin.php +++ b/apps/files/admin.php @@ -21,10 +21,6 @@ * */ - -// Init owncloud - - OCP\User::checkAdminUser(); $htaccessWorking=(getenv('htaccessWorking')=='true'); diff --git a/apps/files/ajax/delete.php b/apps/files/ajax/delete.php index 293543c547f..da7e9d6b2aa 100644 --- a/apps/files/ajax/delete.php +++ b/apps/files/ajax/delete.php @@ -12,29 +12,22 @@ $files = isset($_POST["file"]) ? stripslashes($_POST["file"]) : stripslashes($_P $files = json_decode($files); $filesWithError = ''; + $success = true; + //Now delete -foreach($files as $file) { - if( !OC_Files::delete( $dir, $file )) { +foreach ($files as $file) { + if (($dir === '' && $file === 'Shared') || !\OC\Files\Filesystem::unlink($dir . '/' . $file)) { $filesWithError .= $file . "\n"; $success = false; } } -// updated max file size after upload -$l=new OC_L10N('files'); -$maxUploadFilesize=OCP\Util::maxUploadFilesize($dir); -$maxHumanFilesize=OCP\Util::humanFileSize($maxUploadFilesize); -$maxHumanFilesize=$l->t('Upload') . ' max. '.$maxHumanFilesize; - -if($success) { - OCP\JSON::success(array("data" => array( "dir" => $dir, "files" => $files, - 'uploadMaxFilesize'=>$maxUploadFilesize, - 'maxHumanFilesize'=>$maxHumanFilesize - ))); +// get array with updated storage stats (e.g. max file size) after upload +$storageStats = \OCA\files\lib\Helper::buildFileStorageStatistics($dir); + +if ($success) { + OCP\JSON::success(array("data" => array_merge(array("dir" => $dir, "files" => $files), $storageStats))); } else { - OCP\JSON::error(array("data" => array( "message" => "Could not delete:\n" . $filesWithError, - 'uploadMaxFilesize'=>$maxUploadFilesize, - 'maxHumanFilesize'=>$maxHumanFilesize - ))); + OCP\JSON::error(array("data" => array_merge(array("message" => "Could not delete:\n" . $filesWithError), $storageStats))); } diff --git a/apps/files/ajax/getstoragestats.php b/apps/files/ajax/getstoragestats.php index e55e346ed67..7a2b642a9bd 100644 --- a/apps/files/ajax/getstoragestats.php +++ b/apps/files/ajax/getstoragestats.php @@ -5,12 +5,5 @@ $RUNTIME_APPTYPES = array('filesystem'); OCP\JSON::checkLoggedIn(); -$l=new OC_L10N('files'); -$maxUploadFilesize = OCP\Util::maxUploadFilesize($dir); -$maxHumanFilesize = OCP\Util::humanFileSize($maxUploadFilesize); -$maxHumanFilesize = $l->t('Upload') . ' max. ' . $maxHumanFilesize; - // send back json -OCP\JSON::success(array('data' => array('uploadMaxFilesize' => $maxUploadFilesize, - 'maxHumanFilesize' => $maxHumanFilesize -))); +OCP\JSON::success(array('data' => \OCA\files\lib\Helper::buildFileStorageStatistics('/'))); diff --git a/apps/files/ajax/list.php b/apps/files/ajax/list.php index cade7e872b3..878e4cb2159 100644 --- a/apps/files/ajax/list.php +++ b/apps/files/ajax/list.php @@ -32,7 +32,7 @@ if($doBreadcrumb) { // make filelist $files = array(); -foreach( OC_Files::getdirectorycontent( $dir ) as $i ) { +foreach( \OC\Files\Filesystem::getDirectoryContent( $dir ) as $i ) { $i["date"] = OCP\Util::formatDate($i["mtime"] ); $files[] = $i; } diff --git a/apps/files/ajax/move.php b/apps/files/ajax/move.php index 4ebc3f42d9f..99e43ed23be 100644 --- a/apps/files/ajax/move.php +++ b/apps/files/ajax/move.php @@ -7,19 +7,23 @@ OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); // Get data -$dir = stripslashes($_GET["dir"]); -$file = stripslashes($_GET["file"]); -$target = stripslashes(rawurldecode($_GET["target"])); +$dir = stripslashes($_POST["dir"]); +$file = stripslashes($_POST["file"]); +$target = stripslashes(rawurldecode($_POST["target"])); -$l=OC_L10N::get('files'); - -if(OC_Filesystem::file_exists($target . '/' . $file)) { - OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s - File with this name already exists", array($file)) ))); +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" ))); exit; } -if(OC_Files::move($dir, $file, $target, $file)) { - OCP\JSON::success(array("data" => array( "dir" => $dir, "files" => $file ))); -} else { - OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s", array($file)) ))); +if ($dir != '' || $file != 'Shared') { + $targetFile = \OC\Files\Filesystem::normalizePath($dir . '/' . $file); + $sourceFile = \OC\Files\Filesystem::normalizePath($target . '/' . $file); + 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" ))); + } +}else{ + OCP\JSON::error(array("data" => array( "message" => "Could not move $file" ))); } diff --git a/apps/files/ajax/newfile.php b/apps/files/ajax/newfile.php index 2bac9bb20ba..38714f34a63 100644 --- a/apps/files/ajax/newfile.php +++ b/apps/files/ajax/newfile.php @@ -63,13 +63,12 @@ if($source) { $ctx = stream_context_create(null, array('notification' =>'progress')); $sourceStream=fopen($source, 'rb', false, $ctx); $target=$dir.'/'.$filename; - $result=OC_Filesystem::file_put_contents($target, $sourceStream); + $result=\OC\Files\Filesystem::file_put_contents($target, $sourceStream); if($result) { - $target = OC_Filesystem::normalizePath($target); - $meta = OC_FileCache::get($target); + $meta = \OC\Files\Filesystem::getFileInfo($target); $mime=$meta['mimetype']; - $id = OC_FileCache::getId($target); - $eventSource->send('success', array('mime'=>$mime, 'size'=>OC_Filesystem::filesize($target), 'id' => $id)); + $id = $meta['fileid']; + $eventSource->send('success', array('mime'=>$mime, 'size'=>\OC\Files\Filesystem::filesize($target), 'id' => $id)); } else { $eventSource->send('error', "Error while downloading ".$source. ' to '.$target); } @@ -77,15 +76,15 @@ if($source) { exit(); } else { if($content) { - if(OC_Filesystem::file_put_contents($dir.'/'.$filename, $content)) { - $meta = OC_FileCache::get($dir.'/'.$filename); - $id = OC_FileCache::getId($dir.'/'.$filename); + if(\OC\Files\Filesystem::file_put_contents($dir.'/'.$filename, $content)) { + $meta = \OC\Files\Filesystem::getFileInfo($dir.'/'.$filename); + $id = $meta['fileid']; OCP\JSON::success(array("data" => array('content'=>$content, 'id' => $id))); exit(); } - }elseif(OC_Files::newFile($dir, $filename, 'file')) { - $meta = OC_FileCache::get($dir.'/'.$filename); - $id = OC_FileCache::getId($dir.'/'.$filename); + }elseif(\OC\Files\Filesystem::touch($dir . '/' . $filename)) { + $meta = \OC\Files\Filesystem::getFileInfo($dir.'/'.$filename); + $id = $meta['fileid']; OCP\JSON::success(array("data" => array('content'=>$content, 'id' => $id))); exit(); } diff --git a/apps/files/ajax/newfolder.php b/apps/files/ajax/newfolder.php index 0f1f2f14eb0..e26e1238bc6 100644 --- a/apps/files/ajax/newfolder.php +++ b/apps/files/ajax/newfolder.php @@ -19,13 +19,14 @@ if(strpos($foldername, '/')!==false) { exit(); } -if(OC_Files::newFile($dir, stripslashes($foldername), 'dir')) { +if(\OC\Files\Filesystem::mkdir($dir . '/' . stripslashes($foldername))) { if ( $dir != '/') { $path = $dir.'/'.$foldername; } else { $path = '/'.$foldername; } - $id = OC_FileCache::getId($path); + $meta = \OC\Files\Filesystem::getFileInfo($path); + $id = $meta['fileid']; OCP\JSON::success(array("data" => array('id'=>$id))); exit(); } diff --git a/apps/files/ajax/rawlist.php b/apps/files/ajax/rawlist.php index e0aa0bdac52..1cd2944483c 100644 --- a/apps/files/ajax/rawlist.php +++ b/apps/files/ajax/rawlist.php @@ -15,7 +15,7 @@ $mimetype = isset($_GET['mimetype']) ? $_GET['mimetype'] : ''; // make filelist $files = array(); -foreach( OC_Files::getdirectorycontent( $dir, $mimetype ) as $i ) { +foreach( \OC\Files\Filesystem::getDirectoryContent( $dir, $mimetype ) as $i ) { $i["date"] = OCP\Util::formatDate($i["mtime"] ); $i['mimetype_icon'] = $i['type'] == 'dir' ? \mimetype_icon('dir'): \mimetype_icon($i['mimetype']); $files[] = $i; diff --git a/apps/files/ajax/rename.php b/apps/files/ajax/rename.php index 89b4d4bba73..970aaa638da 100644 --- a/apps/files/ajax/rename.php +++ b/apps/files/ajax/rename.php @@ -11,10 +11,14 @@ $dir = stripslashes($_GET["dir"]); $file = stripslashes($_GET["file"]); $newname = stripslashes($_GET["newname"]); -// Delete -if( $newname !== '.' and OC_Files::move( $dir, $file, $dir, $newname )) { - OCP\JSON::success(array("data" => array( "dir" => $dir, "file" => $file, "newname" => $newname ))); -} else { - $l=OC_L10N::get('files'); - OCP\JSON::error(array("data" => array( "message" => $l->t("Unable to rename file") ))); +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" ))); + } +}else{ + OCP\JSON::error(array("data" => array( "message" => "Unable to rename file" ))); } diff --git a/apps/files/ajax/scan.php b/apps/files/ajax/scan.php index a819578e309..391b98608bd 100644 --- a/apps/files/ajax/scan.php +++ b/apps/files/ajax/scan.php @@ -1,44 +1,71 @@ <?php +set_time_limit(0); //scanning can take ages +session_write_close(); -set_time_limit(0);//scanning can take ages +$force = (isset($_GET['force']) and ($_GET['force'] === 'true')); +$dir = isset($_GET['dir']) ? $_GET['dir'] : ''; -$force=isset($_GET['force']) and $_GET['force']=='true'; -$dir=isset($_GET['dir'])?$_GET['dir']:''; -$checkOnly=isset($_GET['checkonly']) and $_GET['checkonly']=='true'; +$eventSource = new OC_EventSource(); +ScanListener::$eventSource = $eventSource; +ScanListener::$view = \OC\Files\Filesystem::getView(); -$eventSource=false; -if(!$checkOnly) { - $eventSource=new OC_EventSource(); -} +OC_Hook::connect('\OC\Files\Cache\Scanner', 'scan_folder', 'ScanListener', 'folder'); +OC_Hook::connect('\OC\Files\Cache\Scanner', 'scan_file', 'ScanListener', 'file'); -session_write_close(); +$absolutePath = \OC\Files\Filesystem::getView()->getAbsolutePath($dir); -//create the file cache if necessary -if($force or !OC_FileCache::inCache('')) { - if(!$checkOnly) { - OCP\DB::beginTransaction(); +$mountPoints = \OC\Files\Filesystem::getMountPoints($absolutePath); +$mountPoints[] = \OC\Files\Filesystem::getMountPoint($absolutePath); +$mountPoints = array_reverse($mountPoints); //start with the mount point of $dir - if(OC_Cache::isFast()) { - OC_Cache::clear('fileid/'); //make sure the old fileid's don't mess things up +foreach ($mountPoints as $mountPoint) { + $storage = \OC\Files\Filesystem::getStorage($mountPoint); + if ($storage) { + ScanListener::$mountPoints[$storage->getId()] = $mountPoint; + $scanner = $storage->getScanner(); + if ($force) { + $scanner->scan(''); + } else { + $scanner->backgroundScan(); } - - OC_FileCache::scan($dir, $eventSource); - OC_FileCache::clean(); - OCP\DB::commit(); - $eventSource->send('success', true); - } else { - OCP\JSON::success(array('data'=>array('done'=>true))); - exit; } -} else { - if($checkOnly) { - OCP\JSON::success(array('data'=>array('done'=>false))); - exit; +} + +$eventSource->send('done', ScanListener::$fileCount); +$eventSource->close(); + +class ScanListener { + + static public $fileCount = 0; + static public $lastCount = 0; + + /** + * @var \OC\Files\View $view + */ + static public $view; + + /** + * @var array $mountPoints map storage ids to mountpoints + */ + static public $mountPoints = array(); + + /** + * @var \OC_EventSource event source to pass events to + */ + static public $eventSource; + + static function folder($params) { + $internalPath = $params['path']; + $mountPoint = self::$mountPoints[$params['storage']]; + $path = self::$view->getRelativePath($mountPoint . $internalPath); + self::$eventSource->send('folder', $path); } - if(isset($eventSource)) { - $eventSource->send('success', false); - } else { - exit; + + static function file() { + self::$fileCount++; + if (self::$fileCount > self::$lastCount + 20) { //send a count update every 20 files + self::$lastCount = self::$fileCount; + self::$eventSource->send('count', self::$fileCount); + } } } -$eventSource->close(); diff --git a/apps/files/ajax/upgrade.php b/apps/files/ajax/upgrade.php new file mode 100644 index 00000000000..7237b02c0b0 --- /dev/null +++ b/apps/files/ajax/upgrade.php @@ -0,0 +1,44 @@ +<?php +set_time_limit(0); //scanning can take ages +session_write_close(); + +$user = OC_User::getUser(); +$eventSource = new OC_EventSource(); +$listener = new UpgradeListener($eventSource); +$legacy = new \OC\Files\Cache\Legacy($user); + +if ($legacy->hasItems()) { + OC_Hook::connect('\OC\Files\Cache\Upgrade', 'migrate_path', $listener, 'upgradePath'); + + OC_DB::beginTransaction(); + $upgrade = new \OC\Files\Cache\Upgrade($legacy); + $count = $legacy->getCount(); + $eventSource->send('total', $count); + $upgrade->upgradePath('/' . $user . '/files'); + OC_DB::commit(); +} +\OC\Files\Cache\Upgrade::upgradeDone($user); +$eventSource->send('done', true); +$eventSource->close(); + +class UpgradeListener { + /** + * @var OC_EventSource $eventSource + */ + private $eventSource; + + private $count = 0; + private $lastSend = 0; + + public function __construct($eventSource) { + $this->eventSource = $eventSource; + } + + public function upgradePath($path) { + $this->count++; + if ($this->count > ($this->lastSend + 5)) { + $this->lastSend = $this->count; + $this->eventSource->send('count', $this->count); + } + } +} diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php index 93398019608..9ecc1a6c2f4 100644 --- a/apps/files/ajax/upload.php +++ b/apps/files/ajax/upload.php @@ -8,90 +8,78 @@ OCP\JSON::setContentTypeHeader('text/plain'); OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); -$l=OC_L10N::get('files'); +$l = OC_L10N::get('files'); -// current max upload size -$l=new OC_L10N('files'); -$maxUploadFilesize=OCP\Util::maxUploadFilesize($dir); -$maxHumanFilesize=OCP\Util::humanFileSize($maxUploadFilesize); -$maxHumanFilesize=$l->t('Upload') . ' max. '.$maxHumanFilesize; +// get array with current storage stats (e.g. max file size) +$storageStats = \OCA\files\lib\Helper::buildFileStorageStatistics($dir); if (!isset($_FILES['files'])) { - OCP\JSON::error(array('data' => array( 'message' => $l->t( 'No file was uploaded. Unknown error' ), - 'uploadMaxFilesize'=>$maxUploadFilesize, - 'maxHumanFilesize'=>$maxHumanFilesize - ))); + OCP\JSON::error(array('data' => array_merge(array('message' => $l->t('No file was uploaded. Unknown error')), $storageStats))); exit(); } foreach ($_FILES['files']['error'] as $error) { if ($error != 0) { $errors = array( - UPLOAD_ERR_OK=>$l->t('There is no error, the file uploaded with success'), - UPLOAD_ERR_INI_SIZE=>$l->t('The uploaded file exceeds the upload_max_filesize directive in php.ini: ') - .ini_get('upload_max_filesize'), - UPLOAD_ERR_FORM_SIZE=>$l->t('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified' - .' in the HTML form'), - UPLOAD_ERR_PARTIAL=>$l->t('The uploaded file was only partially uploaded'), - UPLOAD_ERR_NO_FILE=>$l->t('No file was uploaded'), - UPLOAD_ERR_NO_TMP_DIR=>$l->t('Missing a temporary folder'), - UPLOAD_ERR_CANT_WRITE=>$l->t('Failed to write to disk'), + UPLOAD_ERR_OK => $l->t('There is no error, the file uploaded with success'), + UPLOAD_ERR_INI_SIZE => $l->t('The uploaded file exceeds the upload_max_filesize directive in php.ini: ') + . ini_get('upload_max_filesize'), + UPLOAD_ERR_FORM_SIZE => $l->t('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified' + . ' in the HTML form'), + UPLOAD_ERR_PARTIAL => $l->t('The uploaded file was only partially uploaded'), + UPLOAD_ERR_NO_FILE => $l->t('No file was uploaded'), + UPLOAD_ERR_NO_TMP_DIR => $l->t('Missing a temporary folder'), + UPLOAD_ERR_CANT_WRITE => $l->t('Failed to write to disk'), ); - OCP\JSON::error(array('data' => array( 'message' => $errors[$error], - 'uploadMaxFilesize'=>$maxUploadFilesize, - 'maxHumanFilesize'=>$maxHumanFilesize - ))); + OCP\JSON::error(array('data' => array_merge(array('message' => $errors[$error]), $storageStats))); exit(); } } -$files=$_FILES['files']; +$files = $_FILES['files']; $dir = $_POST['dir']; -$error=''; +$error = ''; -$totalSize=0; -foreach($files['size'] as $size) { - $totalSize+=$size; +$maxUploadFilesize = OCP\Util::maxUploadFilesize($dir); +$maxHumanFilesize = OCP\Util::humanFileSize($maxUploadFilesize); + +$totalSize = 0; +foreach ($files['size'] as $size) { + $totalSize += $size; } -if($totalSize>OC_Filesystem::free_space($dir)) { - OCP\JSON::error(array('data' => array( 'message' => $l->t( 'Not enough space available' ), - 'uploadMaxFilesize'=>$maxUploadFilesize, - 'maxHumanFilesize'=>$maxHumanFilesize))); +if ($totalSize > \OC\Files\Filesystem::free_space($dir)) { + OCP\JSON::error(array('data' => array('message' => $l->t('Not enough space available'), + 'uploadMaxFilesize' => $maxUploadFilesize, + 'maxHumanFilesize' => $maxHumanFilesize))); exit(); } -$result=array(); -if(strpos($dir, '..') === false) { - $fileCount=count($files['name']); - for($i=0;$i<$fileCount;$i++) { +$result = array(); +if (strpos($dir, '..') === false) { + $fileCount = count($files['name']); + for ($i = 0; $i < $fileCount; $i++) { $target = OCP\Files::buildNotExistingFileName(stripslashes($dir), $files['name'][$i]); // $path needs to be normalized - this failed within drag'n'drop upload to a sub-folder - $target = OC_Filesystem::normalizePath($target); - if(is_uploaded_file($files['tmp_name'][$i]) and OC_Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) { - $meta = OC_FileCache::get($target); - $id = OC_FileCache::getId($target); + $target = \OC\Files\Filesystem::normalizePath($target); + if (is_uploaded_file($files['tmp_name'][$i]) and \OC\Files\Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) { + $meta = \OC\Files\Filesystem::getFileInfo($target); // updated max file size after upload - $maxUploadFilesize=OCP\Util::maxUploadFilesize($dir); - $maxHumanFilesize=OCP\Util::humanFileSize($maxUploadFilesize); - $maxHumanFilesize=$l->t('Upload') . ' max. '.$maxHumanFilesize; + $storageStats = \OCA\files\lib\Helper::buildFileStorageStatistics($dir); - $result[]=array( 'status' => 'success', - 'mime'=>$meta['mimetype'], - 'size'=>$meta['size'], - 'id'=>$id, - 'name'=>basename($target), - 'uploadMaxFilesize'=>$maxUploadFilesize, - 'maxHumanFilesize'=>$maxHumanFilesize + $result[] = array('status' => 'success', + 'mime' => $meta['mimetype'], + 'size' => $meta['size'], + 'id' => $meta['fileid'], + 'name' => basename($target), + 'uploadMaxFilesize' => $maxUploadFilesize, + 'maxHumanFilesize' => $maxHumanFilesize ); } } OCP\JSON::encodedPrint($result); exit(); } else { - $error=$l->t( 'Invalid directory.' ); + $error = $l->t('Invalid directory.'); } -OCP\JSON::error(array('data' => array('message' => $error, - 'uploadMaxFilesize'=>$maxUploadFilesize, - 'maxHumanFilesize'=>$maxHumanFilesize -))); +OCP\JSON::error(array('data' => array_merge(array('message' => $error), $storageStats))); diff --git a/apps/files/appinfo/app.php b/apps/files/appinfo/app.php index 108f02930e2..ab2f3b01a29 100644 --- a/apps/files/appinfo/app.php +++ b/apps/files/appinfo/app.php @@ -1,5 +1,5 @@ <?php -$l=OC_L10N::get('files'); +$l = OC_L10N::get('files'); OCP\App::registerAdmin('files', 'admin'); diff --git a/apps/files/appinfo/filesync.php b/apps/files/appinfo/filesync.php index cbed56a6de5..47884a4f15e 100644 --- a/apps/files/appinfo/filesync.php +++ b/apps/files/appinfo/filesync.php @@ -43,7 +43,7 @@ if ($type != 'oc_chunked') { die; } -if (!OC_Filesystem::is_file($file)) { +if (!\OC\Files\Filesystem::is_file($file)) { OC_Response::setStatus(OC_Response::STATUS_NOT_FOUND); die; } @@ -51,7 +51,7 @@ if (!OC_Filesystem::is_file($file)) { switch($_SERVER['REQUEST_METHOD']) { case 'PUT': $input = fopen("php://input", "r"); - $org_file = OC_Filesystem::fopen($file, 'rb'); + $org_file = \OC\Files\Filesystem::fopen($file, 'rb'); $info = array( 'name' => basename($file), ); diff --git a/apps/files/appinfo/info.xml b/apps/files/appinfo/info.xml index 0a1b196b06f..7c82c839dab 100644 --- a/apps/files/appinfo/info.xml +++ b/apps/files/appinfo/info.xml @@ -5,7 +5,7 @@ <description>File Management</description> <licence>AGPL</licence> <author>Robin Appelman</author> - <require>4.9</require> + <require>4.91</require> <shipped>true</shipped> <standalone/> <default_enable/> diff --git a/apps/files/appinfo/version b/apps/files/appinfo/version index 0664a8fd291..2bf1ca5f549 100644 --- a/apps/files/appinfo/version +++ b/apps/files/appinfo/version @@ -1 +1 @@ -1.1.6 +1.1.7 diff --git a/apps/files/css/files.css b/apps/files/css/files.css index 0c97b009b88..ced2006ec06 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -23,7 +23,9 @@ #new>ul>li>p { cursor:pointer; } #new>ul>li>form>input { padding:0.3em; margin:-0.3em; } -#upload { +#trash { height:17px; margin:0 0 0 1em; z-index:1010; position:absolute; right:13.5em; } + +#upload { height:27px; padding:0; margin-left:0.2em; overflow:hidden; } #upload a { @@ -104,11 +106,12 @@ table td.filename form { font-size:.85em; margin-left:3em; margin-right:3em; } #fileList tr:hover .fileactions { /* background to distinguish when overlaying with file names */ background:rgba(248,248,248,.9); box-shadow:-5px 0 7px rgba(248,248,248,.9); } -#fileList tr.selected:hover .fileactions { /* slightly darker color for selected rows */ +#fileList tr.selected:hover .fileactions, #fileList tr.mouseOver .fileactions { /* slightly darker color for selected rows */ background:rgba(238,238,238,.9); box-shadow:-5px 0 7px rgba(238,238,238,.9); } #fileList .fileactions a.action img { position:relative; top:.2em; } #fileList a.action { display:inline; margin:-.5em 0; padding:1em .5em 1em .5em !important; } +#fileList img.move2trash { display:inline; margin:-.5em 0; padding:1em .5em 1em .5em !important; float:right; } a.action.delete { float:right; } a.action>img { max-height:16px; max-width:16px; vertical-align:text-bottom; } .selectedActions { display:none; float:right; } @@ -122,3 +125,22 @@ a.action>img { max-height:16px; max-width:16px; vertical-align:text-bottom; } #scanning-message{ top:40%; left:40%; position:absolute; display:none; } div.crumb a{ padding:0.9em 0 0.7em 0; } + +table.dragshadow { + width:auto; +} +table.dragshadow td.filename { + padding-left:36px; + padding-right:16px; +} +table.dragshadow td.size { + padding-right:8px; +} +#upgrade { + width: 400px; + position: absolute; + top: 200px; + left: 50%; + text-align: center; + margin-left: -200px; +} diff --git a/apps/files/download.php b/apps/files/download.php index e2149cd4135..e3fe24e45d7 100644 --- a/apps/files/download.php +++ b/apps/files/download.php @@ -21,15 +21,12 @@ * */ -// Init owncloud - - // Check if we are a user OCP\User::checkLoggedIn(); $filename = $_GET["file"]; -if(!OC_Filesystem::file_exists($filename)) { +if(!\OC\Files\Filesystem::file_exists($filename)) { header("HTTP/1.0 404 Not Found"); $tmpl = new OCP\Template( '', '404', 'guest' ); $tmpl->assign('file', $filename); @@ -37,7 +34,7 @@ if(!OC_Filesystem::file_exists($filename)) { exit; } -$ftype=OC_Filesystem::getMimeType( $filename ); +$ftype=\OC\Files\Filesystem::getMimeType( $filename ); header('Content-Type:'.$ftype); if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) { @@ -47,7 +44,7 @@ if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) { . '; filename="' . rawurlencode( basename($filename) ) . '"' ); } OCP\Response::disableCaching(); -header('Content-Length: '.OC_Filesystem::filesize($filename)); +header('Content-Length: '.\OC\Files\Filesystem::filesize($filename)); OC_Util::obEnd(); -OC_Filesystem::readfile( $filename ); +\OC\Files\Filesystem::readfile( $filename ); diff --git a/apps/files/index.php b/apps/files/index.php index 1c4b7fbd497..7e767cc8a4f 100644 --- a/apps/files/index.php +++ b/apps/files/index.php @@ -29,22 +29,39 @@ OCP\Util::addStyle('files', 'files'); OCP\Util::addscript('files', 'jquery.iframe-transport'); OCP\Util::addscript('files', 'jquery.fileupload'); OCP\Util::addscript('files', 'jquery-visibility'); -OCP\Util::addscript('files', 'files'); OCP\Util::addscript('files', 'filelist'); -OCP\Util::addscript('files', 'fileactions'); -OCP\Util::addscript('files', 'keyboardshortcuts'); OCP\App::setActiveNavigationEntry('files_index'); // Load the files $dir = isset($_GET['dir']) ? stripslashes($_GET['dir']) : ''; // Redirect if directory does not exist -if (!OC_Filesystem::is_dir($dir . '/')) { +if (!\OC\Files\Filesystem::is_dir($dir . '/')) { header('Location: ' . $_SERVER['SCRIPT_NAME'] . ''); exit(); } +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 { + return strnatcasecmp($a['name'], $b['name']); + } +} + $files = array(); -foreach (OC_Files::getdirectorycontent($dir) as $i) { +$user = OC_User::getUser(); +if (\OC\Files\Cache\Upgrade::needUpgrade($user)) { //dont load anything if we need to upgrade the cache + $content = array(); + $needUpgrade = true; + $freeSpace = 0; +} else { + $content = \OC\Files\Filesystem::getDirectoryContent($dir); + $freeSpace = \OC\Files\Filesystem::free_space($dir); + $needUpgrade = false; +} +foreach ($content as $i) { $i['date'] = OCP\Util::formatDate($i['mtime']); if ($i['type'] == 'file') { $fileinfo = pathinfo($i['name']); @@ -55,12 +72,12 @@ foreach (OC_Files::getdirectorycontent($dir) as $i) { $i['extension'] = ''; } } - if ($i['directory'] == '/') { - $i['directory'] = ''; - } + $i['directory'] = $dir; $files[] = $i; } +usort($files, "fileCmp"); + // Make breadcrumb $breadcrumb = array(); $pathtohere = ''; @@ -76,31 +93,48 @@ $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('disableSharing', false); $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', ''); $breadcrumbNav->assign('breadcrumb', $breadcrumb, false); $breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files', 'index.php') . '?dir=', false); -$maxUploadFilesize=OCP\Util::maxUploadFilesize($dir); - $permissions = OCP\PERMISSION_READ; -if (OC_Filesystem::isUpdatable($dir . '/')) { +if (\OC\Files\Filesystem::isCreatable($dir . '/')) { + $permissions |= OCP\PERMISSION_CREATE; +} +if (\OC\Files\Filesystem::isUpdatable($dir . '/')) { $permissions |= OCP\PERMISSION_UPDATE; } -if (OC_Filesystem::isDeletable($dir . '/')) { +if (\OC\Files\Filesystem::isDeletable($dir . '/')) { $permissions |= OCP\PERMISSION_DELETE; } -if (OC_Filesystem::isSharable($dir . '/')) { +if (\OC\Files\Filesystem::isSharable($dir . '/')) { $permissions |= OCP\PERMISSION_SHARE; } -$tmpl = new OCP\Template('files', 'index', 'user'); -$tmpl->assign('fileList', $list->fetchPage(), false); -$tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage(), false); -$tmpl->assign('dir', OC_Filesystem::normalizePath($dir)); -$tmpl->assign('isCreatable', OC_Filesystem::isCreatable($dir . '/')); -$tmpl->assign('permissions', $permissions); -$tmpl->assign('files', $files); -$tmpl->assign('uploadMaxFilesize', $maxUploadFilesize); -$tmpl->assign('uploadMaxHumanFilesize', OCP\Util::humanFileSize($maxUploadFilesize)); -$tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); -$tmpl->printPage(); +if ($needUpgrade) { + OCP\Util::addscript('files', 'upgrade'); + $tmpl = new OCP\Template('files', 'upgrade', 'user'); + $tmpl->printPage(); +} else { + // information about storage capacities + $storageInfo=OC_Helper::getStorageInfo(); + $maxUploadFilesize=OCP\Util::maxUploadFilesize($dir); + + OCP\Util::addscript('files', 'fileactions'); + OCP\Util::addscript('files', 'files'); + OCP\Util::addscript('files', 'keyboardshortcuts'); + $tmpl = new OCP\Template('files', 'index', 'user'); + $tmpl->assign('fileList', $list->fetchPage(), false); + $tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage(), false); + $tmpl->assign('dir', \OC\Files\Filesystem::normalizePath($dir)); + $tmpl->assign('isCreatable', \OC\Files\Filesystem::isCreatable($dir . '/')); + $tmpl->assign('permissions', $permissions); + $tmpl->assign('files', $files); + $tmpl->assign('trash', \OCP\App::isEnabled('files_trashbin')); + $tmpl->assign('uploadMaxFilesize', $maxUploadFilesize); + $tmpl->assign('uploadMaxHumanFilesize', OCP\Util::humanFileSize($maxUploadFilesize)); + $tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); + $tmpl->assign('usedSpacePercent', (int)$storageInfo['relative']); + $tmpl->printPage(); +}
\ No newline at end of file diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index f5ee363a4c8..c30f1bcddd8 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -147,15 +147,19 @@ $(document).ready(function () { } else { var downloadScope = 'file'; } - FileActions.register(downloadScope, 'Download', OC.PERMISSION_READ, function () { - return OC.imagePath('core', 'actions/download'); - }, function (filename) { - window.location = OC.filePath('files', 'ajax', 'download.php') + '?files=' + encodeURIComponent(filename) + '&dir=' + encodeURIComponent($('#dir').val()); - }); - + + if (typeof disableDownloadActions == 'undefined' || !disableDownloadActions) { + FileActions.register(downloadScope, 'Download', OC.PERMISSION_READ, function () { + return OC.imagePath('core', 'actions/download'); + }, function (filename) { + window.location = OC.filePath('files', 'ajax', 'download.php') + '?files=' + encodeURIComponent(filename) + '&dir=' + encodeURIComponent($('#dir').val()); + }); + } + $('#fileList tr').each(function(){ FileActions.display($(this).children('td.filename')); }); + }); FileActions.register('all', 'Delete', OC.PERMISSION_DELETE, function () { @@ -185,6 +189,7 @@ FileActions.register('all', 'Rename', OC.PERMISSION_UPDATE, function () { FileList.rename(filename); }); + FileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function (filename) { window.location = OC.linkTo('files', 'index.php') + '?dir=' + encodeURIComponent($('#dir').val()).replace(/%2F/g, '/') + '/' + encodeURIComponent(filename); }); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 66697bbbf56..d0810f70145 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -201,15 +201,14 @@ var FileList={ }, checkName:function(oldName, newName, isNewFile) { if (isNewFile || $('tr').filterAttr('data-file', newName).length > 0) { - if (isNewFile) { - $('#notification').html(t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+'<span class="replace">'+t('files', 'replace')+'</span><span class="suggest">'+t('files', 'suggest name')+'</span><span class="cancel">'+t('files', 'cancel')+'</span>'); - } else { - $('#notification').html(t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+'<span class="replace">'+t('files', 'replace')+'</span><span class="cancel">'+t('files', 'cancel')+'</span>'); - } $('#notification').data('oldName', oldName); $('#notification').data('newName', newName); $('#notification').data('isNewFile', isNewFile); - $('#notification').fadeIn(); + if (isNewFile) { + OC.Notification.showHtml(t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+'<span class="replace">'+t('files', 'replace')+'</span><span class="suggest">'+t('files', 'suggest name')+'</span><span class="cancel">'+t('files', 'cancel')+'</span>'); + } else { + OC.Notification.showHtml(t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+'<span class="replace">'+t('files', 'replace')+'</span><span class="cancel">'+t('files', 'cancel')+'</span>'); + } return true; } else { return false; @@ -251,11 +250,10 @@ var FileList={ FileList.finishReplace(); }; if (isNewFile) { - $('#notification').html(t('files', 'replaced {new_name}', {new_name: newName})+'<span class="undo">'+t('files', 'undo')+'</span>'); + OC.Notification.showHtml(t('files', 'replaced {new_name}', {new_name: newName})+'<span class="undo">'+t('files', 'undo')+'</span>'); } else { - $('#notification').html(t('files', 'replaced {new_name} with {old_name}', {new_name: newName}, {old_name: oldName})+'<span class="undo">'+t('files', 'undo')+'</span>'); + OC.Notification.showHtml(t('files', 'replaced {new_name} with {old_name}', {new_name: newName}, {old_name: oldName})+'<span class="undo">'+t('files', 'undo')+'</span>'); } - $('#notification').fadeIn(); }, finishReplace:function() { if (!FileList.replaceCanceled && FileList.replaceOldName && FileList.replaceNewName) { @@ -273,66 +271,39 @@ var FileList={ } }, do_delete:function(files){ + if(files.substr){ + files=[files]; + } + for (var i in files) { + var deleteAction = $('tr').filterAttr('data-file',files[i]).children("td.date").children(".action.delete"); + var oldHTML = deleteAction[0].outerHTML; + var newHTML = '<img class="move2trash" data-action="Delete" title="'+t('files', 'perform delete operation')+'" src="'+ OC.imagePath('core', 'loading.gif') +'"></a>'; + deleteAction[0].outerHTML = newHTML; + } // Finish any existing actions if (FileList.lastAction) { FileList.lastAction(); } - FileList.prepareDeletion(files); - - if (!FileList.useUndo) { - FileList.lastAction(); - } else { - // NOTE: Temporary fix to change the text to unshared for files in root of Shared folder - if ($('#dir').val() == '/Shared') { - $('#notification').html(t('files', 'unshared {files}', {'files': escapeHTML(files)})+'<span class="undo">'+t('files', 'undo')+'</span>'); - } else { - $('#notification').html(t('files', 'deleted {files}', {'files': escapeHTML(files)})+'<span class="undo">'+t('files', 'undo')+'</span>'); - } - $('#notification').fadeIn(); - } - }, - finishDelete:function(ready,sync){ - if(!FileList.deleteCanceled && FileList.deleteFiles){ - var fileNames=JSON.stringify(FileList.deleteFiles); - $.ajax({ - url: OC.filePath('files', 'ajax', 'delete.php'), - async:!sync, - type:'post', - data: {dir:$('#dir').val(),files:fileNames}, - complete: function(data){ - boolOperationFinished(data, function(){ - $('#notification').fadeOut('400'); - $.each(FileList.deleteFiles,function(index,file){ - FileList.remove(file); + var fileNames = JSON.stringify(files); + $.post(OC.filePath('files', 'ajax', 'delete.php'), + {dir:$('#dir').val(),files:fileNames}, + function(result){ + if (result.status == 'success') { + $.each(files,function(index,file){ + var files = $('tr').filterAttr('data-file',file); + files.hide(); + files.find('input[type="checkbox"]').removeAttr('checked'); + files.removeClass('selected'); }); - FileList.deleteCanceled=true; - FileList.deleteFiles=null; - FileList.lastAction = null; - if(ready){ - ready(); - } - }); - } - }); - } - }, - prepareDeletion:function(files){ - if(files.substr){ - files=[files]; - } - $.each(files,function(index,file){ - var files = $('tr').filterAttr('data-file',file); - files.hide(); - files.find('input[type="checkbox"]').removeAttr('checked'); - files.removeClass('selected'); - }); - procesSelection(); - FileList.deleteCanceled=false; - FileList.deleteFiles=files; - FileList.lastAction = function() { - FileList.finishDelete(null, true); - }; + procesSelection(); + } else { + $.each(files,function(index,file) { + var deleteAction = $('tr').filterAttr('data-file',file).children("td.date").children(".move2trash"); + deleteAction[0].outerHTML = oldHTML; + }); + } + }); } }; @@ -362,16 +333,16 @@ $(document).ready(function(){ FileList.replaceIsNewFile = null; } FileList.lastAction = null; - $('#notification').fadeOut('400'); + OC.Notification.hide(); }); $('#notification .replace').live('click', function() { - $('#notification').fadeOut('400', function() { - FileList.replace($('#notification').data('oldName'), $('#notification').data('newName'), $('#notification').data('isNewFile')); - }); + OC.Notification.hide(function() { + FileList.replace($('#notification').data('oldName'), $('#notification').data('newName'), $('#notification').data('isNewFile')); + }); }); $('#notification .suggest').live('click', function() { $('tr').filterAttr('data-file', $('#notification').data('oldName')).show(); - $('#notification').fadeOut('400'); + OC.Notification.hide(); }); $('#notification .cancel').live('click', function() { if ($('#notification').data('isNewFile')) { diff --git a/apps/files/js/files.js b/apps/files/js/files.js index c1abe205151..3d09d6aa2b6 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -32,26 +32,28 @@ Files={ } if(response.data !== undefined && response.data.uploadMaxFilesize !== undefined) { $('#max_upload').val(response.data.uploadMaxFilesize); - $('#data-upload-form a').attr('original-title', response.data.maxHumanFilesize); + $('#upload.button').attr('original-title', response.data.maxHumanFilesize); + $('#usedSpacePercent').val(response.data.usedSpacePercent); + Files.displayStorageWarnings(); } if(response[0] == undefined) { return; } if(response[0].uploadMaxFilesize !== undefined) { $('#max_upload').val(response[0].uploadMaxFilesize); - $('#data-upload-form a').attr('original-title', response[0].maxHumanFilesize); + $('#upload.button').attr('original-title', response[0].maxHumanFilesize); + $('#usedSpacePercent').val(response[0].usedSpacePercent); + Files.displayStorageWarnings(); } }, isFileNameValid:function (name) { if (name === '.') { - $('#notification').text(t('files', '\'.\' is an invalid file name.')); - $('#notification').fadeIn(); + OC.Notification.show(t('files', '\'.\' is an invalid file name.')); return false; } if (name.length == 0) { - $('#notification').text(t('files', 'File name cannot be empty.')); - $('#notification').fadeIn(); + OC.Notification.show(t('files', 'File name cannot be empty.')); return false; } @@ -59,13 +61,26 @@ Files={ var invalid_characters = ['\\', '/', '<', '>', ':', '"', '|', '?', '*']; for (var i = 0; i < invalid_characters.length; i++) { if (name.indexOf(invalid_characters[i]) != -1) { - $('#notification').text(t('files', "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed.")); - $('#notification').fadeIn(); + OC.Notification.show(t('files', "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed.")); return false; } } - $('#notification').fadeOut(); + OC.Notification.hide(); return true; + }, + displayStorageWarnings: function() { + if (!OC.Notification.isHidden()) { + return; + } + + var usedSpacePercent = $('#usedSpacePercent').val(); + if (usedSpacePercent > 98) { + OC.Notification.show(t('files', 'Your storage is full, files can not be updated or synced anymore!')); + return; + } + if (usedSpacePercent > 90) { + OC.Notification.show(t('files', 'Your storage is almost full ({usedSpacePercent}%)', {usedSpacePercent: usedSpacePercent})); + } } }; $(document).ready(function() { @@ -99,6 +114,11 @@ $(document).ready(function() { $(this).parent().children('#file_upload_start').trigger('click'); return false; }); + + // Show trash bin + $('#trash a').live('click', function() { + window.location=OC.filePath('files_trashbin', '', 'index.php'); + }); var lastChecked; @@ -201,8 +221,7 @@ $(document).ready(function() { $('.download').click('click',function(event) { var files=getSelectedFiles('name').join(';'); var dir=$('#dir').val()||'/'; - $('#notification').text(t('files','Your download is being prepared. This might take some time if the files are big.')); - $('#notification').fadeIn(); + OC.Notification.show(t('files','Your download is being prepared. This might take some time if the files are big.')); // use special download URL if provided, e.g. for public shared files if ( (downloadURL = document.getElementById("downloadURL")) ) { window.location=downloadURL.value+"&download&files="+files; @@ -331,8 +350,7 @@ $(document).ready(function() { var response; response=jQuery.parseJSON(result); if(response[0] == undefined || response[0].status != 'success') { - $('#notification').text(t('files', response.data.message)); - $('#notification').fadeIn(); + OC.Notification.show(t('files', response.data.message)); } Files.updateMaxUploadFilesize(response); var file=response[0]; @@ -372,9 +390,7 @@ $(document).ready(function() { uploadtext.text(t('files', '{count} files uploading', {count: currentUploads})); } delete uploadingFiles[dirName][fileName]; - $('#notification').hide(); - $('#notification').text(t('files', 'Upload cancelled.')); - $('#notification').fadeIn(); + OC.Notification.show(t('files', 'Upload cancelled.')); } }); //TODO test with filenames containing slashes @@ -401,20 +417,17 @@ $(document).ready(function() { FileList.loadingDone(file.name, file.id); } else { Files.cancelUpload(this.files[0].name); - $('#notification').text(t('files', response.data.message)); - $('#notification').fadeIn(); + OC.Notification.show(t('files', response.data.message)); $('#fileList > tr').not('[data-mime]').fadeOut(); $('#fileList > tr').not('[data-mime]').remove(); } - }) - .error(function(jqXHR, textStatus, errorThrown) { - if(errorThrown === 'abort') { - Files.cancelUpload(this.files[0].name); - $('#notification').hide(); - $('#notification').text(t('files', 'Upload cancelled.')); - $('#notification').fadeIn(); - } - }); + }) + .error(function(jqXHR, textStatus, errorThrown) { + if(errorThrown === 'abort') { + Files.cancelUpload(this.files[0].name); + OC.Notification.show(t('files', 'Upload cancelled.')); + } + }); uploadingFiles[uniqueName] = jqXHR; } } @@ -435,8 +448,7 @@ $(document).ready(function() { FileList.loadingDone(file.name, file.id); } else { //TODO Files.cancelUpload(/*where do we get the filename*/); - $('#notification').text(t('files', response.data.message)); - $('#notification').fadeIn(); + OC.Notification.show(t('files', response.data.message)); $('#fileList > tr').not('[data-mime]').fadeOut(); $('#fileList > tr').not('[data-mime]').remove(); } @@ -455,6 +467,10 @@ $(document).ready(function() { $('#uploadprogressbar').progressbar('value',progress); }, start: function(e, data) { + //IE < 10 does not fire the necessary events for the progress bar. + if($.browser.msie && parseInt($.browser.version) < 10) { + return; + } $('#uploadprogressbar').progressbar({value:0}); $('#uploadprogressbar').fadeIn(); if(data.dataType != 'iframe ') { @@ -556,14 +572,12 @@ $(document).ready(function() { event.preventDefault(); var newname=input.val(); if(type == 'web' && newname.length == 0) { - $('#notification').text(t('files', 'URL cannot be empty.')); - $('#notification').fadeIn(); + OC.Notification.show(t('files', 'URL cannot be empty.')); return false; } else if (type != 'web' && !Files.isFileNameValid(newname)) { return false; } else if( type == 'folder' && $('#dir').val() == '/' && newname == 'Shared') { - $('#notification').text(t('files','Invalid folder name. Usage of \'Shared\' is reserved by Owncloud')); - $('#notification').fadeIn(); + OC.Notification.show(t('files','Invalid folder name. Usage of \'Shared\' is reserved by Owncloud')); return false; } if (FileList.lastAction) { @@ -661,12 +675,8 @@ $(document).ready(function() { }); }); - //check if we need to scan the filesystem - $.get(OC.filePath('files','ajax','scan.php'),{checkonly:'true'}, function(response) { - if(response.data.done){ - scanFiles(); - } - }, "json"); + //do a background scan if needed + scanFiles(); var lastWidth = 0; var breadcrumbs = []; @@ -734,6 +744,10 @@ $(document).ready(function() { resizeBreadcrumbs(true); + // display storage warnings + setTimeout ( "Files.displayStorageWarnings()", 100 ); + OC.Notification.setDefault(Files.displayStorageWarnings); + // file space size sync function update_storage_statistics() { $.getJSON(OC.filePath('files','ajax','getstoragestats.php'),function(response) { @@ -761,27 +775,23 @@ $(document).ready(function() { } }); -function scanFiles(force,dir){ +function scanFiles(force, dir){ if(!dir){ - dir=''; + dir = ''; } - force=!!force; //cast to bool - scanFiles.scanning=true; - $('#scanning-message').show(); - $('#fileList').remove(); - var scannerEventSource=new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force:force,dir:dir}); - scanFiles.cancel=scannerEventSource.close.bind(scannerEventSource); - scannerEventSource.listen('scanning',function(data){ - $('#scan-count').text(t('files', '{count} files scanned', {count: data.count})); - $('#scan-current').text(data.file+'/'); + force = !!force; //cast to bool + scanFiles.scanning = true; + var scannerEventSource = new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force:force,dir:dir}); + scanFiles.cancel = scannerEventSource.close.bind(scannerEventSource); + scannerEventSource.listen('count',function(count){ + console.log(count + 'files scanned') + }); + scannerEventSource.listen('folder',function(path){ + console.log('now scanning ' + path) }); - scannerEventSource.listen('success',function(success){ + scannerEventSource.listen('done',function(count){ scanFiles.scanning=false; - if(success){ - window.location.reload(); - }else{ - alert(t('files', 'error while scanning')); - } + console.log('done after ' + count + 'files'); }); } scanFiles.scanning=false; @@ -800,32 +810,101 @@ function updateBreadcrumb(breadcrumbHtml) { $('p.nav').empty().html(breadcrumbHtml); } -//options for file drag/dropp +var createDragShadow = function(event){ + //select dragged file + var isDragSelected = $(event.target).parents('tr').find('td input:first').prop('checked'); + if (!isDragSelected) { + //select dragged file + $(event.target).parents('tr').find('td input:first').prop('checked',true); + } + + var selectedFiles = getSelectedFiles(); + + if (!isDragSelected && selectedFiles.length == 1) { + //revert the selection + $(event.target).parents('tr').find('td input:first').prop('checked',false); + } + + //also update class when we dragged more than one file + if (selectedFiles.length > 1) { + $(event.target).parents('tr').addClass('selected'); + } + + // build dragshadow + var dragshadow = $('<table class="dragshadow"></table>'); + var tbody = $('<tbody></tbody>'); + dragshadow.append(tbody); + + var dir=$('#dir').val(); + + $(selectedFiles).each(function(i,elem){ + var newtr = $('<tr data-dir="'+dir+'" data-filename="'+elem.name+'">' + +'<td class="filename">'+elem.name+'</td><td class="size">'+humanFileSize(elem.size)+'</td>' + +'</tr>'); + tbody.append(newtr); + if (elem.type === 'dir') { + newtr.find('td.filename').attr('style','background-image:url('+OC.imagePath('core', 'filetypes/folder.png')+')'); + } else { + getMimeIcon(elem.mime,function(path){ + newtr.find('td.filename').attr('style','background-image:url('+path+')'); + }); + } + }); + + return dragshadow; +} + +//options for file drag/drop var dragOptions={ - distance: 20, revert: 'invalid', opacity: 0.7, helper: 'clone', + revert: 'invalid', revertDuration: 300, + opacity: 0.7, zIndex: 100, appendTo: 'body', cursorAt: { left: -5, top: -5 }, + helper: createDragShadow, cursor: 'move', stop: function(event, ui) { $('#fileList tr td.filename').addClass('ui-draggable'); } -}; +} + var folderDropOptions={ drop: function( event, ui ) { - var file=ui.draggable.parent().data('file'); - var target=$(this).find('.nametext').text().trim(); - var dir=$('#dir').val(); - $.ajax({ - url: OC.filePath('files', 'ajax', 'move.php'), - data: "dir="+encodeURIComponent(dir)+"&file="+encodeURIComponent(file)+'&target='+encodeURIComponent(dir)+'/'+encodeURIComponent(target), - complete: function(data){boolOperationFinished(data, function(){ - var el = $('#fileList tr').filterAttr('data-file',file).find('td.filename'); - el.draggable('destroy'); - FileList.remove(file); - });} + //don't allow moving a file into a selected folder + if ($(event.target).parents('tr').find('td input:first').prop('checked') === true) { + return false; + } + + var target=$.trim($(this).find('.nametext').text()); + + var files = ui.helper.find('tr'); + $(files).each(function(i,row){ + var dir = $(row).data('dir'); + var file = $(row).data('filename'); + $.post(OC.filePath('files', 'ajax', 'move.php'), { dir: dir, file: file, target: dir+'/'+target }, function(result) { + if (result) { + if (result.status === 'success') { + //recalculate folder size + var oldSize = $('#fileList tr').filterAttr('data-file',target).data('size'); + var newSize = oldSize + $('#fileList tr').filterAttr('data-file',file).data('size'); + $('#fileList tr').filterAttr('data-file',target).data('size', newSize); + $('#fileList tr').filterAttr('data-file',target).find('td.filesize').text(humanFileSize(newSize)); + + FileList.remove(file); + procesSelection(); + $('#notification').hide(); + } else { + $('#notification').hide(); + $('#notification').text(result.data.message); + $('#notification').fadeIn(); + } + } else { + OC.dialogs.alert(t('Error moving file')); + } + }); }); - } + }, + tolerance: 'pointer' } + var crumbDropOptions={ drop: function( event, ui ) { - var file=ui.draggable.parent().data('file'); var target=$(this).data('dir'); var dir=$('#dir').val(); while(dir.substr(0,1)=='/'){//remove extra leading /'s @@ -838,12 +917,25 @@ var crumbDropOptions={ if(target==dir || target+'/'==dir){ return; } - $.ajax({ - url: OC.filePath('files', 'ajax', 'move.php'), - data: "dir="+encodeURIComponent(dir)+"&file="+encodeURIComponent(file)+'&target='+encodeURIComponent(target), - complete: function(data){boolOperationFinished(data, function(){ - FileList.remove(file); - });} + var files = ui.helper.find('tr'); + $(files).each(function(i,row){ + var dir = $(row).data('dir'); + var file = $(row).data('filename'); + $.post(OC.filePath('files', 'ajax', 'move.php'), { dir: dir, file: file, target: target }, function(result) { + if (result) { + if (result.status === 'success') { + FileList.remove(file); + procesSelection(); + $('#notification').hide(); + } else { + $('#notification').hide(); + $('#notification').text(result.data.message); + $('#notification').fadeIn(); + } + } else { + OC.dialogs.alert(t('Error moving file')); + } + }); }); }, tolerance: 'pointer' @@ -950,7 +1042,7 @@ function getUniqueName(name){ num=parseInt(numMatch[numMatch.length-1])+1; base=base.split('(') base.pop(); - base=base.join('(').trim(); + base=$.trim(base.join('(')); } name=base+' ('+num+')'; if (extension) { diff --git a/apps/files/js/upgrade.js b/apps/files/js/upgrade.js new file mode 100644 index 00000000000..02d57fc9e6c --- /dev/null +++ b/apps/files/js/upgrade.js @@ -0,0 +1,17 @@ +$(document).ready(function () { + var eventSource, total, bar = $('#progressbar'); + console.log('start'); + bar.progressbar({value: 0}); + eventSource = new OC.EventSource(OC.filePath('files', 'ajax', 'upgrade.php')); + eventSource.listen('total', function (count) { + total = count; + console.log(count + ' files needed to be migrated'); + }); + eventSource.listen('count', function (count) { + bar.progressbar({value: (count / total) * 100}); + console.log(count); + }); + eventSource.listen('done', function () { + document.location.reload(); + }); +}); diff --git a/apps/files/l10n/ar.php b/apps/files/l10n/ar.php index d468b102875..b741815be45 100644 --- a/apps/files/l10n/ar.php +++ b/apps/files/l10n/ar.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Ø¥Ø±ÙØ¹", "There is no error, the file uploaded with success" => "تم ترÙيع Ø§Ù„Ù…Ù„ÙØ§Øª بنجاØ.", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "ØØ¬Ù… المل٠الذي تريد ترÙيعه أعلى مما MAX_FILE_SIZE ÙŠØ³Ù…Ø Ø¨Ù‡ ÙÙŠ واجهة ال HTML.", "The uploaded file was only partially uploaded" => "تم ترÙيع جزء من Ø§Ù„Ù…Ù„ÙØ§Øª الذي تريد ترÙيعها Ùقط", @@ -12,6 +11,7 @@ "Name" => "الاسم", "Size" => "ØØ¬Ù…", "Modified" => "معدل", +"Upload" => "Ø¥Ø±ÙØ¹", "Maximum upload size" => "Ø§Ù„ØØ¯ الأقصى Ù„ØØ¬Ù… Ø§Ù„Ù…Ù„ÙØ§Øª التي يمكن Ø±ÙØ¹Ù‡Ø§", "Save" => "ØÙظ", "New" => "جديد", diff --git a/apps/files/l10n/bg_BG.php b/apps/files/l10n/bg_BG.php index a8c2dc97e00..ae49f516999 100644 --- a/apps/files/l10n/bg_BG.php +++ b/apps/files/l10n/bg_BG.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Качване", "Missing a temporary folder" => "ЛипÑва временна папка", "Files" => "Файлове", "Delete" => "Изтриване", @@ -11,6 +10,7 @@ "Name" => "Име", "Size" => "Размер", "Modified" => "Променено", +"Upload" => "Качване", "Maximum upload size" => "МакÑимален размер за качване", "0 is unlimited" => "Ползвайте 0 за без ограничениÑ", "Save" => "ЗапиÑ", diff --git a/apps/files/l10n/bn_BD.php b/apps/files/l10n/bn_BD.php index e8e19c6898f..3d676810c7c 100644 --- a/apps/files/l10n/bn_BD.php +++ b/apps/files/l10n/bn_BD.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "আপলোড", -"Could not move %s - File with this name already exists" => "%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 নিরà§à¦¦à§‡à¦¶à¦¿à¦¤ আয়তন অতিকà§à¦°à¦® করছেঃ", @@ -24,8 +20,6 @@ "replaced {new_name}" => "{new_name} পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করা হয়েছে", "undo" => "কà§à¦°à¦¿à§Ÿà¦¾ পà§à¦°à¦¤à§à¦¯à¦¾à¦¹à¦¾à¦°", "replaced {new_name} with {old_name}" => "{new_name} কে {old_name} নামে পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করা হয়েছে", -"unshared {files}" => "{files} à¦à¦¾à¦—াà¦à¦¾à¦—ি বাতিল কর", -"deleted {files}" => "{files} মà§à¦›à§‡ ফেলা হয়েছে", "'.' is an invalid file name." => "টি à¦à¦•টি অননà§à¦®à§‹à¦¦à¦¿à¦¤ নাম।", "File name cannot be empty." => "ফাইলের নামটি ফাà¦à¦•া রাখা যাবে না।", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "নামটি সঠিক নয়, '\\', '/', '<', '>', ':', '\"', '|', '?' à¦à¦¬à¦‚ '*' অনà§à¦®à§‹à¦¦à¦¿à¦¤ নয়।", @@ -39,8 +33,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "ফাইল আপলোড চলমান। à¦à¦‡ পৃষà§à¦ া পরিতà§à¦¯à¦¾à¦— করলে আপলোড বাতিল করা হবে।", "URL cannot be empty." => "URL ফাà¦à¦•া রাখা যাবে না।", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "ফোলà§à¦¡à¦¾à¦°à§‡à¦° নামটি সঠিক নয়। 'à¦à¦¾à¦—াà¦à¦¾à¦—ি করা' শà§à¦§à§à¦®à¦¾à¦¤à§à¦° Owncloud à¦à¦° জনà§à¦¯ সংরকà§à¦·à¦¿à¦¤à¥¤", -"{count} files scanned" => "{count} টি ফাইল সà§à¦•à§à¦¯à¦¾à¦¨ করা হয়েছে", -"error while scanning" => "সà§à¦•à§à¦¯à¦¾à¦¨ করার সময় সমসà§à¦¯à¦¾ দেখা দিয়েছে", "Name" => "নাম", "Size" => "আকার", "Modified" => "পরিবরà§à¦¤à¦¿à¦¤", @@ -48,6 +40,7 @@ "{count} folders" => "{count} টি ফোলà§à¦¡à¦¾à¦°", "1 file" => "১টি ফাইল", "{count} files" => "{count} টি ফাইল", +"Upload" => "আপলোড", "File handling" => "ফাইল হà§à¦¯à¦¾à¦°à§à¦¡à¦²à¦¿à¦‚", "Maximum upload size" => "আপলোডের সরà§à¦¬à§‹à¦šà§à¦š আকার", "max. possible: " => "অনà§à¦®à§‹à¦¦à¦¿à¦¤ সরà§à¦¬à§‹à¦šà§à¦š আকার", diff --git a/apps/files/l10n/ca.php b/apps/files/l10n/ca.php index b35a9299de0..eb98278bfb8 100644 --- a/apps/files/l10n/ca.php +++ b/apps/files/l10n/ca.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Puja", -"Could not move %s - File with this name already exists" => "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:", @@ -24,11 +20,11 @@ "replaced {new_name}" => "s'ha substituït {new_name}", "undo" => "desfés", "replaced {new_name} with {old_name}" => "s'ha substituït {old_name} per {new_name}", -"unshared {files}" => "no compartits {files}", -"deleted {files}" => "eliminats {files}", "'.' is an invalid file name." => "'.' és un nom no và lid per un fitxer.", "File name cannot be empty." => "El nom del fitxer no pot ser buit.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "El nóm no és và lid, '\\', '/', '<', '>', ':', '\"', '|', '?' i '*' no estan permesos.", +"Your storage is full, files can not be updated or synced anymore!" => "El vostre espai d'emmagatzemament és ple, els fitxers ja no es poden actualitzar o sincronitzar!", +"Your storage is almost full ({usedSpacePercent}%)" => "El vostre espai d'emmagatzemament és gairebé ple ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "S'està preparant la baixada. Pot trigar una estona si els fitxers són grans.", "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", @@ -40,8 +36,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "Hi ha una pujada en curs. Si abandoneu la pà gina la pujada es cancel·larà .", "URL cannot be empty." => "La URL no pot ser buida", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nom de carpeta no và lid. L'ús de 'Shared' està reservat per Owncloud", -"{count} files scanned" => "{count} fitxers escannejats", -"error while scanning" => "error durant l'escaneig", "Name" => "Nom", "Size" => "Mida", "Modified" => "Modificat", @@ -49,6 +43,7 @@ "{count} folders" => "{count} carpetes", "1 file" => "1 fitxer", "{count} files" => "{count} fitxers", +"Upload" => "Puja", "File handling" => "Gestió de fitxers", "Maximum upload size" => "Mida mà xima de pujada", "max. possible: " => "mà xim possible:", @@ -67,5 +62,6 @@ "Upload too large" => "La pujada és massa gran", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Els fitxers que esteu intentant pujar excedeixen la mida mà xima de pujada del servidor", "Files are being scanned, please wait." => "S'estan escanejant els fitxers, espereu", -"Current scanning" => "Actualment escanejant" +"Current scanning" => "Actualment escanejant", +"Upgrading filesystem cache..." => "Actualitzant la memòria de cau del sistema de fitxers..." ); diff --git a/apps/files/l10n/cs_CZ.php b/apps/files/l10n/cs_CZ.php index a8d82ba5111..76b3b82d72c 100644 --- a/apps/files/l10n/cs_CZ.php +++ b/apps/files/l10n/cs_CZ.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Odeslat", -"Could not move %s - File with this name already exists" => "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:", @@ -24,11 +20,11 @@ "replaced {new_name}" => "nahrazeno {new_name}", "undo" => "zpÄ›t", "replaced {new_name} with {old_name}" => "nahrazeno {new_name} s {old_name}", -"unshared {files}" => "sdÃlenà zruÅ¡eno pro {files}", -"deleted {files}" => "smazáno {files}", "'.' is an invalid file name." => "'.' je neplatným názvem souboru.", "File name cannot be empty." => "Název souboru nemůže být prázdný Å™etÄ›zec.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Neplatný název, znaky '\\', '/', '<', '>', ':', '\"', '|', '?' a '*' nejsou povoleny.", +"Your storage is full, files can not be updated or synced anymore!" => "VaÅ¡e úložiÅ¡tÄ› je plné, nelze aktualizovat ani synchronizovat soubory.", +"Your storage is almost full ({usedSpacePercent}%)" => "VaÅ¡e úložiÅ¡tÄ› je téměř plné ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "VaÅ¡e soubory ke staženà se pÅ™ipravujÃ. Pokud jsou velké může to chvÃli trvat.", "Unable to upload your file as it is a directory or has 0 bytes" => "Nelze odeslat Váš soubor, protože je to adresář nebo má velikost 0 bajtů", "Upload Error" => "Chyba odesÃlánÃ", @@ -40,8 +36,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "ProbÃhá odesÃlánà souboru. OpuÅ¡tÄ›nà stránky vyústà ve zruÅ¡enà nahrávánÃ.", "URL cannot be empty." => "URL nemůže být prázdná", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Neplatný název složky. Použità 'Shared' je rezervováno pro vnitÅ™nà potÅ™eby Owncloud", -"{count} files scanned" => "prozkoumáno {count} souborů", -"error while scanning" => "chyba pÅ™i prohledávánÃ", "Name" => "Název", "Size" => "Velikost", "Modified" => "ZmÄ›nÄ›no", @@ -49,6 +43,7 @@ "{count} folders" => "{count} složky", "1 file" => "1 soubor", "{count} files" => "{count} soubory", +"Upload" => "Odeslat", "File handling" => "Zacházenà se soubory", "Maximum upload size" => "Maximálnà velikost pro odesÃlánÃ", "max. possible: " => "nejvÄ›tšà možná: ", @@ -67,5 +62,6 @@ "Upload too large" => "Odeslaný soubor je pÅ™ÃliÅ¡ velký", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Soubory, které se snažÃte odeslat, pÅ™ekraÄujà limit velikosti odesÃlánà na tomto serveru.", "Files are being scanned, please wait." => "Soubory se prohledávajÃ, prosÃm Äekejte.", -"Current scanning" => "Aktuálnà prohledávánÃ" +"Current scanning" => "Aktuálnà prohledávánÃ", +"Upgrading filesystem cache..." => "Aktualizuji mezipaměť souborového systému..." ); diff --git a/apps/files/l10n/da.php b/apps/files/l10n/da.php index 010af12e960..71a5a56de57 100644 --- a/apps/files/l10n/da.php +++ b/apps/files/l10n/da.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Upload", "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", @@ -8,6 +7,7 @@ "No file was uploaded" => "Ingen fil blev uploadet", "Missing a temporary folder" => "Mangler en midlertidig mappe", "Failed to write to disk" => "Fejl ved skrivning til disk.", +"Invalid directory." => "Ugyldig mappe.", "Files" => "Filer", "Unshare" => "Fjern deling", "Delete" => "Slet", @@ -19,9 +19,12 @@ "replaced {new_name}" => "erstattede {new_name}", "undo" => "fortryd", "replaced {new_name} with {old_name}" => "erstattede {new_name} med {old_name}", -"unshared {files}" => "ikke delte {files}", -"deleted {files}" => "slettede {files}", +"'.' is an invalid file name." => "'.' er et ugyldigt filnavn.", +"File name cannot be empty." => "Filnavnet kan ikke stÃ¥ tomt.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ugyldigt navn, '\\', '/', '<', '>', ':' | '?', '\"', '', og '*' er ikke tilladt.", +"Your storage is full, files can not be updated or synced anymore!" => "Din opbevaringsplads er fyldt op, filer kan ikke opdateres eller synkroniseres længere!", +"Your storage is almost full ({usedSpacePercent}%)" => "Din opbevaringsplads er næsten fyldt op ({usedSpacePercent}%)", +"Your download is being prepared. This might take some time if the files are big." => "Dit download forberedes. Dette kan tage lidt tid ved større filer.", "Unable to upload your file as it is a directory or has 0 bytes" => "Kunne ikke uploade din fil, da det enten er en mappe eller er tom", "Upload Error" => "Fejl ved upload", "Close" => "Luk", @@ -31,8 +34,7 @@ "Upload cancelled." => "Upload afbrudt.", "File upload is in progress. Leaving the page now will cancel the upload." => "Fil upload kører. Hvis du forlader siden nu, vil uploadet blive annuleret.", "URL cannot be empty." => "URLen kan ikke være tom.", -"{count} files scanned" => "{count} filer skannet", -"error while scanning" => "fejl under scanning", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ugyldigt mappenavn. Brug af \"Shared\" er forbeholdt Owncloud", "Name" => "Navn", "Size" => "Størrelse", "Modified" => "Ændret", @@ -40,6 +42,7 @@ "{count} folders" => "{count} mapper", "1 file" => "1 fil", "{count} files" => "{count} filer", +"Upload" => "Upload", "File handling" => "FilhÃ¥ndtering", "Maximum upload size" => "Maksimal upload-størrelse", "max. possible: " => "max. mulige: ", diff --git a/apps/files/l10n/de.php b/apps/files/l10n/de.php index c851f7df2a7..d42410fee30 100644 --- a/apps/files/l10n/de.php +++ b/apps/files/l10n/de.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Hochladen", -"Could not move %s - File with this name already exists" => "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", @@ -24,11 +20,11 @@ "replaced {new_name}" => "{new_name} wurde ersetzt", "undo" => "rückgängig machen", "replaced {new_name} with {old_name}" => "{old_name} ersetzt durch {new_name}", -"unshared {files}" => "Freigabe von {files} aufgehoben", -"deleted {files}" => "{files} gelöscht", "'.' is an invalid file name." => "'.' ist kein gültiger Dateiname", "File name cannot be empty." => "Der Dateiname darf nicht leer sein", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ungültiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig.", +"Your storage is full, files can not be updated or synced anymore!" => "Ihr Speicherplatz ist voll, Dateien können nicht mehr aktualisiert oder synchronisiert werden!", +"Your storage is almost full ({usedSpacePercent}%)" => "Ihr Speicherplatz ist fast aufgebraucht ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "Dein Download wird vorbereitet. Dies kann bei größeren Dateien etwas dauern.", "Unable to upload your file as it is a directory or has 0 bytes" => "Deine Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist.", "Upload Error" => "Fehler beim Upload", @@ -40,8 +36,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "Dateiupload läuft. Wenn Du die Seite jetzt verlässt, wird der Upload abgebrochen.", "URL cannot be empty." => "Die URL darf nicht leer sein", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ungültiger Verzeichnisname. Die Nutzung von \"Shared\" ist ownCloud vorbehalten.", -"{count} files scanned" => "{count} Dateien wurden gescannt", -"error while scanning" => "Fehler beim Scannen", "Name" => "Name", "Size" => "Größe", "Modified" => "Bearbeitet", @@ -49,6 +43,7 @@ "{count} folders" => "{count} Ordner", "1 file" => "1 Datei", "{count} files" => "{count} Dateien", +"Upload" => "Hochladen", "File handling" => "Dateibehandlung", "Maximum upload size" => "Maximale Upload-Größe", "max. possible: " => "maximal möglich:", diff --git a/apps/files/l10n/de_DE.php b/apps/files/l10n/de_DE.php index 281685b78df..0a67cd0fc5f 100644 --- a/apps/files/l10n/de_DE.php +++ b/apps/files/l10n/de_DE.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Hochladen", -"Could not move %s - File with this name already exists" => "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", @@ -24,11 +20,11 @@ "replaced {new_name}" => "{new_name} wurde ersetzt", "undo" => "rückgängig machen", "replaced {new_name} with {old_name}" => "{old_name} wurde ersetzt durch {new_name}", -"unshared {files}" => "Freigabe für {files} beendet", -"deleted {files}" => "{files} gelöscht", "'.' is an invalid file name." => "'.' ist kein gültiger Dateiname.", "File name cannot be empty." => "Der Dateiname darf nicht leer sein.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ungültiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig.", +"Your storage is full, files can not be updated or synced anymore!" => "Ihr Speicher ist voll. Daher können keine Dateien mehr aktualisiert oder synchronisiert werden!", +"Your storage is almost full ({usedSpacePercent}%)" => "Ihr Speicher ist fast voll ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "Ihr Download wird vorbereitet. Dies kann bei größeren Dateien einen Moment dauern.", "Unable to upload your file as it is a directory or has 0 bytes" => "Ihre Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist.", "Upload Error" => "Fehler beim Upload", @@ -40,8 +36,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "Der Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen.", "URL cannot be empty." => "Die URL darf nicht leer sein.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ungültiger Verzeichnisname. Die Nutzung von \"Shared\" ist ownCloud vorbehalten", -"{count} files scanned" => "{count} Dateien wurden gescannt", -"error while scanning" => "Fehler beim Scannen", "Name" => "Name", "Size" => "Größe", "Modified" => "Bearbeitet", @@ -49,6 +43,7 @@ "{count} folders" => "{count} Ordner", "1 file" => "1 Datei", "{count} files" => "{count} Dateien", +"Upload" => "Hochladen", "File handling" => "Dateibehandlung", "Maximum upload size" => "Maximale Upload-Größe", "max. possible: " => "maximal möglich:", diff --git a/apps/files/l10n/el.php b/apps/files/l10n/el.php index cc93943d286..7b458bf35dd 100644 --- a/apps/files/l10n/el.php +++ b/apps/files/l10n/el.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Αποστολή", -"Could not move %s - File with this name already exists" => "Αδυναμία μετακίνησης του %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:", @@ -24,11 +20,11 @@ "replaced {new_name}" => "{new_name} αντικαταστάθηκε", "undo" => "αναίÏεση", "replaced {new_name} with {old_name}" => "αντικαταστάθηκε το {new_name} με {old_name}", -"unshared {files}" => "μη διαμοιÏασμÎνα {files}", -"deleted {files}" => "διαγÏαμμÎνα {files}", "'.' is an invalid file name." => "'.' είναι μη ÎγκυÏο όνομα αÏχείου.", "File name cannot be empty." => "Το όνομα αÏχείου δεν Ï€ÏÎπει να είναι κενό.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Μη ÎγκυÏο όνομα, '\\', '/', '<', '>', ':', '\"', '|', '?' και '*' δεν επιτÏÎπονται.", +"Your storage is full, files can not be updated or synced anymore!" => "Ο αποθηκευτικός σας χώÏος είναι γεμάτος, τα αÏχεία δεν μποÏοÏν να ενημεÏωθοÏν ή να συγχÏονιστοÏν πια!", +"Your storage is almost full ({usedSpacePercent}%)" => "Ο αποθηκευτικός χώÏος είναι σχεδόν γεμάτος ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "Η λήψη Ï€Ïοετοιμάζεται. Αυτό μποÏεί να πάÏει ÏŽÏα εάν τα αÏχεία Îχουν μεγάλο μÎγεθος.", "Unable to upload your file as it is a directory or has 0 bytes" => "Αδυναμία στην αποστολή του αÏχείου σας Î±Ï†Î¿Ï ÎµÎ¯Î½Î±Î¹ φάκελος ή Îχει 0 bytes", "Upload Error" => "Σφάλμα Αποστολής", @@ -40,8 +36,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "Η αποστολή του αÏχείου βÏίσκεται σε εξÎλιξη. Το κλείσιμο της σελίδας θα ακυÏώσει την αποστολή.", "URL cannot be empty." => "Η URL δεν Ï€ÏÎπει να είναι κενή.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Μη ÎγκυÏο όνομα φακÎλου. Η χÏήση του 'ΚοινόχÏηστος' χÏησιμοποιείται από ο Owncloud", -"{count} files scanned" => "{count} αÏχεία ανιχνεÏτηκαν", -"error while scanning" => "σφάλμα κατά την ανίχνευση", "Name" => "Όνομα", "Size" => "ΜÎγεθος", "Modified" => "ΤÏοποποιήθηκε", @@ -49,6 +43,7 @@ "{count} folders" => "{count} φάκελοι", "1 file" => "1 αÏχείο", "{count} files" => "{count} αÏχεία", +"Upload" => "Αποστολή", "File handling" => "ΔιαχείÏιση αÏχείων", "Maximum upload size" => "ΜÎγιστο μÎγεθος αποστολής", "max. possible: " => "μÎγιστο δυνατό:", diff --git a/apps/files/l10n/eo.php b/apps/files/l10n/eo.php index 0aebf9c034e..a510d47ad6c 100644 --- a/apps/files/l10n/eo.php +++ b/apps/files/l10n/eo.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "AlÅuti", -"Could not move %s - File with this name already exists" => "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: ", @@ -24,8 +20,6 @@ "replaced {new_name}" => "anstataÅiÄis {new_name}", "undo" => "malfari", "replaced {new_name} with {old_name}" => "anstataÅiÄis {new_name} per {old_name}", -"unshared {files}" => "malkunhaviÄis {files}", -"deleted {files}" => "foriÄis {files}", "'.' is an invalid file name." => "'.' ne estas valida dosiernomo.", "File name cannot be empty." => "Dosiernomo devas ne malpleni.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nevalida nomo: “\\â€, “/â€, “<â€, “>â€, “:â€, “\"â€, “|â€, “?†kaj “*†ne permesatas.", @@ -40,8 +34,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "DosieralÅuto plenumiÄas. Lasi la paÄon nun nuligus la alÅuton.", "URL cannot be empty." => "URL ne povas esti malplena.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nevalida dosierujnomo. Uzo de “Shared†rezervatas de Owncloud.", -"{count} files scanned" => "{count} dosieroj skaniÄis", -"error while scanning" => "eraro dum skano", "Name" => "Nomo", "Size" => "Grando", "Modified" => "Modifita", @@ -49,6 +41,7 @@ "{count} folders" => "{count} dosierujoj", "1 file" => "1 dosiero", "{count} files" => "{count} dosierujoj", +"Upload" => "AlÅuti", "File handling" => "Dosieradministro", "Maximum upload size" => "Maksimuma alÅutogrando", "max. possible: " => "maks. ebla: ", diff --git a/apps/files/l10n/es.php b/apps/files/l10n/es.php index c76431ef383..bc5046767c6 100644 --- a/apps/files/l10n/es.php +++ b/apps/files/l10n/es.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Subir", -"Could not move %s - File with this name already exists" => "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", @@ -24,8 +20,6 @@ "replaced {new_name}" => "reemplazado {new_name}", "undo" => "deshacer", "replaced {new_name} with {old_name}" => "reemplazado {new_name} con {old_name}", -"unshared {files}" => "{files} descompartidos", -"deleted {files}" => "{files} eliminados", "'.' is an invalid file name." => "'.' es un nombre de archivo inválido.", "File name cannot be empty." => "El nombre de archivo no puede estar vacÃo.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nombre Invalido, \"\\\", \"/\", \"<\", \">\", \":\", \"\", \"|\" \"?\" y \"*\" no están permitidos ", @@ -40,8 +34,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "La subida del archivo está en proceso. Salir de la página ahora cancelará la subida.", "URL cannot be empty." => "La URL no puede estar vacÃa.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nombre de carpeta invalido. El uso de \"Shared\" esta reservado para Owncloud", -"{count} files scanned" => "{count} archivos escaneados", -"error while scanning" => "error escaneando", "Name" => "Nombre", "Size" => "Tamaño", "Modified" => "Modificado", @@ -49,6 +41,7 @@ "{count} folders" => "{count} carpetas", "1 file" => "1 archivo", "{count} files" => "{count} archivos", +"Upload" => "Subir", "File handling" => "Tratamiento de archivos", "Maximum upload size" => "Tamaño máximo de subida", "max. possible: " => "máx. posible:", diff --git a/apps/files/l10n/es_AR.php b/apps/files/l10n/es_AR.php index 418844007b2..ea8352e3251 100644 --- a/apps/files/l10n/es_AR.php +++ b/apps/files/l10n/es_AR.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Subir", -"Could not move %s - File with this name already exists" => "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:", @@ -24,11 +20,11 @@ "replaced {new_name}" => "reemplazado {new_name}", "undo" => "deshacer", "replaced {new_name} with {old_name}" => "reemplazado {new_name} con {old_name}", -"unshared {files}" => "{files} se dejaron de compartir", -"deleted {files}" => "{files} borrados", "'.' is an invalid file name." => "'.' es un nombre de archivo inválido.", "File name cannot be empty." => "El nombre del archivo no puede quedar vacÃo.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nombre invalido, '\\', '/', '<', '>', ':', '\"', '|', '?' y '*' no están permitidos.", +"Your storage is full, files can not be updated or synced anymore!" => "El almacenamiento está lleno, los archivos no se pueden seguir actualizando ni sincronizando", +"Your storage is almost full ({usedSpacePercent}%)" => "El almacenamiento está casi lleno ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "Tu descarga esta siendo preparada. Esto puede tardar algun tiempo si los archivos son muy grandes.", "Unable to upload your file as it is a directory or has 0 bytes" => "No fue posible subir el archivo porque es un directorio o porque su tamaño es 0 bytes", "Upload Error" => "Error al subir el archivo", @@ -40,8 +36,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "La subida del archivo está en proceso. Si salÃs de la página ahora, la subida se cancelará.", "URL cannot be empty." => "La URL no puede estar vacÃa", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nombre de carpeta inválido. El uso de 'Shared' está reservado por ownCloud", -"{count} files scanned" => "{count} archivos escaneados", -"error while scanning" => "error mientras se escaneaba", "Name" => "Nombre", "Size" => "Tamaño", "Modified" => "Modificado", @@ -49,6 +43,7 @@ "{count} folders" => "{count} directorios", "1 file" => "1 archivo", "{count} files" => "{count} archivos", +"Upload" => "Subir", "File handling" => "Tratamiento de archivos", "Maximum upload size" => "Tamaño máximo de subida", "max. possible: " => "máx. posible:", diff --git a/apps/files/l10n/et_EE.php b/apps/files/l10n/et_EE.php index 8305cf0edea..54dd7cfdc56 100644 --- a/apps/files/l10n/et_EE.php +++ b/apps/files/l10n/et_EE.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Lae üles", "No file was uploaded. Unknown error" => "Ühtegi faili ei laetud üles. Tundmatu viga", "There is no error, the file uploaded with success" => "Ühtegi viga pole, fail on üles laetud", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Üles laetud faili suurus ületab HTML vormis määratud upload_max_filesize suuruse", @@ -18,8 +17,6 @@ "replaced {new_name}" => "asendatud nimega {new_name}", "undo" => "tagasi", "replaced {new_name} with {old_name}" => "asendas nime {old_name} nimega {new_name}", -"unshared {files}" => "jagamata {files}", -"deleted {files}" => "kustutatud {files}", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Vigane nimi, '\\', '/', '<', '>', ':', '\"', '|', '?' ja '*' pole lubatud.", "Unable to upload your file as it is a directory or has 0 bytes" => "Sinu faili üleslaadimine ebaõnnestus, kuna see on kaust või selle suurus on 0 baiti", "Upload Error" => "Üleslaadimise viga", @@ -30,8 +27,6 @@ "Upload cancelled." => "Üleslaadimine tühistati.", "File upload is in progress. Leaving the page now will cancel the upload." => "Faili üleslaadimine on töös. Lehelt lahkumine katkestab selle üleslaadimise.", "URL cannot be empty." => "URL ei saa olla tühi.", -"{count} files scanned" => "{count} faili skännitud", -"error while scanning" => "viga skännimisel", "Name" => "Nimi", "Size" => "Suurus", "Modified" => "Muudetud", @@ -39,6 +34,7 @@ "{count} folders" => "{count} kausta", "1 file" => "1 fail", "{count} files" => "{count} faili", +"Upload" => "Lae üles", "File handling" => "Failide käsitlemine", "Maximum upload size" => "Maksimaalne üleslaadimise suurus", "max. possible: " => "maks. võimalik: ", diff --git a/apps/files/l10n/eu.php b/apps/files/l10n/eu.php index a1cb5632121..6f4c55f4846 100644 --- a/apps/files/l10n/eu.php +++ b/apps/files/l10n/eu.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Igo", -"Could not move %s - File with this name already exists" => "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:", @@ -24,11 +20,12 @@ "replaced {new_name}" => "ordezkatua {new_name}", "undo" => "desegin", "replaced {new_name} with {old_name}" => " {new_name}-k {old_name} ordezkatu du", -"unshared {files}" => "elkarbanaketa utzita {files}", -"deleted {files}" => "ezabatuta {files}", "'.' is an invalid file name." => "'.' ez da fitxategi izen baliogarria.", "File name cannot be empty." => "Fitxategi izena ezin da hutsa izan.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "IZen aliogabea, '\\', '/', '<', '>', ':', '\"', '|', '?' eta '*' ez daude baimenduta.", +"Your storage is full, files can not be updated or synced anymore!" => "Zure biltegiratzea beterik dago, ezingo duzu aurrerantzean fitxategirik igo edo sinkronizatu!", +"Your storage is almost full ({usedSpacePercent}%)" => "Zure biltegiratzea nahiko beterik dago (%{usedSpacePercent})", +"Your download is being prepared. This might take some time if the files are big." => "Zure deskarga prestatu egin behar da. Denbora bat har lezake fitxategiak handiak badira. ", "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", @@ -39,8 +36,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "Fitxategien igoera martxan da. Orria orain uzteak igoera ezeztatutko du.", "URL cannot be empty." => "URLa ezin da hutsik egon.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Baliogabeako karpeta izena. 'Shared' izena Owncloudek erreserbatzen du", -"{count} files scanned" => "{count} fitxategi eskaneatuta", -"error while scanning" => "errore bat egon da eskaneatzen zen bitartean", "Name" => "Izena", "Size" => "Tamaina", "Modified" => "Aldatuta", @@ -48,6 +43,7 @@ "{count} folders" => "{count} karpeta", "1 file" => "fitxategi bat", "{count} files" => "{count} fitxategi", +"Upload" => "Igo", "File handling" => "Fitxategien kudeaketa", "Maximum upload size" => "Igo daitekeen gehienezko tamaina", "max. possible: " => "max, posiblea:", diff --git a/apps/files/l10n/fa.php b/apps/files/l10n/fa.php index ec8b5cdec4e..a4181c6ff53 100644 --- a/apps/files/l10n/fa.php +++ b/apps/files/l10n/fa.php @@ -1,27 +1,47 @@ <?php $TRANSLATIONS = array( -"Upload" => "بارگذاری", "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 Ø§Ø³ØªÙØ§Ø¯Ù‡ کرده است.", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "ØØ¯Ø§Ú©Ø«Ø± ØØ¬Ù… مجاز برای بارگذاری از طریق HTML \nMAX_FILE_SIZE", "The uploaded file was only partially uploaded" => "مقدار Ú©Ù…ÛŒ از ÙØ§ÛŒÙ„ بارگذاری شده", "No file was uploaded" => "هیچ ÙØ§ÛŒÙ„ÛŒ بارگذاری نشده", "Missing a temporary folder" => "یک پوشه موقت Ú¯Ù… شده است", "Failed to write to disk" => "نوشتن بر روی دیسک سخت ناموÙÙ‚ بود", +"Not enough space available" => "ÙØ¶Ø§ÛŒ کاÙÛŒ در دسترس نیست", +"Invalid directory." => "Ùهرست راهنما نامعتبر Ù…ÛŒ باشد.", "Files" => "ÙØ§ÛŒÙ„ ها", "Unshare" => "لغو اشتراک", "Delete" => "پاک کردن", "Rename" => "تغییرنام", +"{new_name} already exists" => "{نام _جدید} در ØØ§Ù„ ØØ§Ø¶Ø± وجود دارد.", "replace" => "جایگزین", +"suggest name" => "پیشنهاد نام", "cancel" => "لغو", +"replaced {new_name}" => "{نام _جدید} جایگزین شد ", "undo" => "بازگشت", +"replaced {new_name} with {old_name}" => "{نام_جدید} با { نام_قدیمی} جایگزین شد.", +"'.' is an invalid file name." => "'.' یک نام پرونده نامعتبر است.", +"File name cannot be empty." => "نام پرونده نمی تواند خالی باشد.", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "نام نامعتبر ØŒ '\\', '/', '<', '>', ':', '\"', '|', '?' Ùˆ '*' مجاز نمی باشند.", +"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" => "{ شمار } ÙØ§ÛŒÙ„ های در ØØ§Ù„ آپلود", "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" => "نام پوشه نامعتبر است. Ø§Ø³ØªÙØ§Ø¯Ù‡ از \" به اشتراک گذاشته شده \" متعلق به سایت Owncloud است.", "Name" => "نام", "Size" => "اندازه", "Modified" => "تغییر ÛŒØ§ÙØªÙ‡", +"1 folder" => "1 پوشه", +"{count} folders" => "{ شمار} پوشه ها", +"1 file" => "1 پرونده", +"{count} files" => "{ شمار } ÙØ§ÛŒÙ„ ها", +"Upload" => "بارگذاری", "File handling" => "اداره پرونده ها", "Maximum upload size" => "ØØ¯Ø§Ú©Ø«Ø± اندازه بارگزاری", "max. possible: " => "ØØ¯Ø§Ú©Ø«Ø±Ù…قدارممکن:", @@ -33,6 +53,7 @@ "New" => "جدید", "Text file" => "ÙØ§ÛŒÙ„ متنی", "Folder" => "پوشه", +"From link" => "از پیوند", "Cancel upload" => "متوق٠کردن بار گذاری", "Nothing in here. Upload something!" => "اینجا هیچ چیز نیست.", "Download" => "بارگیری", diff --git a/apps/files/l10n/fi_FI.php b/apps/files/l10n/fi_FI.php index fac93b1246b..8f07adcf6f3 100644 --- a/apps/files/l10n/fi_FI.php +++ b/apps/files/l10n/fi_FI.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Lähetä", -"Could not move %s - File with this name already exists" => "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", @@ -24,6 +20,8 @@ "'.' is an invalid file name." => "'.' on virheellinen nimi tiedostolle.", "File name cannot be empty." => "Tiedoston nimi ei voi olla tyhjä.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Virheellinen nimi, merkit '\\', '/', '<', '>', ':', '\"', '|', '?' ja '*' eivät ole sallittuja.", +"Your storage is full, files can not be updated or synced anymore!" => "Tallennustila on loppu, tiedostoja ei voi enää päivittää tai synkronoida!", +"Your storage is almost full ({usedSpacePercent}%)" => "Tallennustila on melkein loppu ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "Lataustasi valmistellaan. Tämä saattaa kestää hetken, jos tiedostot ovat suuria kooltaan.", "Unable to upload your file as it is a directory or has 0 bytes" => "Tiedoston lähetys epäonnistui, koska sen koko on 0 tavua tai kyseessä on kansio", "Upload Error" => "Lähetysvirhe.", @@ -39,6 +37,7 @@ "{count} folders" => "{count} kansiota", "1 file" => "1 tiedosto", "{count} files" => "{count} tiedostoa", +"Upload" => "Lähetä", "File handling" => "Tiedostonhallinta", "Maximum upload size" => "Lähetettävän tiedoston suurin sallittu koko", "max. possible: " => "suurin mahdollinen:", diff --git a/apps/files/l10n/fr.php b/apps/files/l10n/fr.php index 162c2e2dfda..42e146f5844 100644 --- a/apps/files/l10n/fr.php +++ b/apps/files/l10n/fr.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Envoyer", -"Could not move %s - File with this name already exists" => "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:", @@ -24,11 +20,12 @@ "replaced {new_name}" => "{new_name} a été remplacé", "undo" => "annuler", "replaced {new_name} with {old_name}" => "{new_name} a été remplacé par {old_name}", -"unshared {files}" => "Fichiers non partagés : {files}", -"deleted {files}" => "Fichiers supprimés : {files}", "'.' is an invalid file name." => "'.' n'est pas un nom de fichier valide.", "File name cannot be empty." => "Le nom de fichier ne peut être vide.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nom invalide, les caractères '\\', '/', '<', '>', ':', '\"', '|', '?' et '*' ne sont pas autorisés.", +"Your storage is full, files can not be updated or synced anymore!" => "Votre espage de stockage est plein, les fichiers ne peuvent plus être téléversés ou synchronisés !", +"Your storage is almost full ({usedSpacePercent}%)" => "Votre espace de stockage est presque plein ({usedSpacePercent}%)", +"Your download is being prepared. This might take some time if the files are big." => "Votre téléchargement est cours de préparation. Ceci peut nécessiter un certain temps si les fichiers sont volumineux.", "Unable to upload your file as it is a directory or has 0 bytes" => "Impossible de charger vos fichiers car il s'agit d'un dossier ou le fichier fait 0 octet.", "Upload Error" => "Erreur de chargement", "Close" => "Fermer", @@ -39,8 +36,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier.", "URL cannot be empty." => "L'URL ne peut-être vide", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nom de dossier invalide. L'utilisation du mot 'Shared' est réservée à Owncloud", -"{count} files scanned" => "{count} fichiers indexés", -"error while scanning" => "erreur lors de l'indexation", "Name" => "Nom", "Size" => "Taille", "Modified" => "Modifié", @@ -48,6 +43,7 @@ "{count} folders" => "{count} dossiers", "1 file" => "1 fichier", "{count} files" => "{count} fichiers", +"Upload" => "Envoyer", "File handling" => "Gestion des fichiers", "Maximum upload size" => "Taille max. d'envoi", "max. possible: " => "Max. possible :", diff --git a/apps/files/l10n/gl.php b/apps/files/l10n/gl.php index d24680eaa86..a1c0f0a5dd5 100644 --- a/apps/files/l10n/gl.php +++ b/apps/files/l10n/gl.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Enviar", -"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 se puido mover %s", -"Unable to rename file" => "Non se pode renomear o ficheiro", "No file was uploaded. Unknown error" => "Non se subiu ningún ficheiro. Erro descoñecido.", "There is no error, the file uploaded with success" => "Non hai erros. O ficheiro enviouse correctamente", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro subido excede a directiva indicada polo tamaño_máximo_de_subida de php.ini", @@ -24,8 +20,6 @@ "replaced {new_name}" => "substituÃr {new_name}", "undo" => "desfacer", "replaced {new_name} with {old_name}" => "substituÃr {new_name} polo {old_name}", -"unshared {files}" => "{files} sen compartir", -"deleted {files}" => "{files} eliminados", "'.' is an invalid file name." => "'.' é un nonme de ficheiro non válido", "File name cannot be empty." => "O nome de ficheiro non pode estar baldeiro", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome non válido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non se permiten.", @@ -39,8 +33,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "A subida do ficheiro está en curso. SaÃr agora da páxina cancelará a subida.", "URL cannot be empty." => "URL non pode quedar baleiro.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de cartafol non válido. O uso de 'Shared' está reservado por Owncloud", -"{count} files scanned" => "{count} ficheiros escaneados", -"error while scanning" => "erro mentres analizaba", "Name" => "Nome", "Size" => "Tamaño", "Modified" => "Modificado", @@ -48,6 +40,7 @@ "{count} folders" => "{count} cartafoles", "1 file" => "1 ficheiro", "{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: ", diff --git a/apps/files/l10n/he.php b/apps/files/l10n/he.php index 8acc544cf5f..94cddca0000 100644 --- a/apps/files/l10n/he.php +++ b/apps/files/l10n/he.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "העל××”", "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:", @@ -19,8 +18,6 @@ "replaced {new_name}" => "{new_name} הוחלף", "undo" => "ביטול", "replaced {new_name} with {old_name}" => "{new_name} הוחלף ב־{old_name}", -"unshared {files}" => "בוטל ×©×™×ª×•×¤× ×©×œ {files}", -"deleted {files}" => "{files} × ×ž×—×§×•", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "×”×©× ×©×’×•×™, ×סור להשתמש ×‘×ª×•×•×™× '\\', '/', '<', '>', ':', '\"', '|', '?' ו־'*'.", "Unable to upload your file as it is a directory or has 0 bytes" => "×œ× ×™×›×•×œ להעלות ×ת הקובץ מכיוון שזו תקיה ×ו שמשקל הקובץ 0 בתי×", "Upload Error" => "שגי×ת העל××”", @@ -31,8 +28,6 @@ "Upload cancelled." => "ההעל××” בוטלה.", "File upload is in progress. Leaving the page now will cancel the upload." => "מתבצעת כעת העל×ת קבצי×. עזיבה של העמוד תבטל ×ת ההעל××”.", "URL cannot be empty." => "קישור ××™× ×• יכול להיות ריק.", -"{count} files scanned" => "{count} ×§×‘×¦×™× × ×¡×¨×§×•", -"error while scanning" => "×ירעה שגי××” במהלך הסריקה", "Name" => "ש×", "Size" => "גודל", "Modified" => "זמן ×©×™× ×•×™", @@ -40,6 +35,7 @@ "{count} folders" => "{count} תיקיות", "1 file" => "קובץ ×חד", "{count} files" => "{count} קבצי×", +"Upload" => "העל××”", "File handling" => "טיפול בקבצי×", "Maximum upload size" => "גודל העל××” מקסימלי", "max. possible: " => "המרבי ×”×פשרי: ", diff --git a/apps/files/l10n/hr.php b/apps/files/l10n/hr.php index a9a7354d1d6..4f4546aaf07 100644 --- a/apps/files/l10n/hr.php +++ b/apps/files/l10n/hr.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "PoÅ¡alji", "There is no error, the file uploaded with success" => "Datoteka je poslana uspjeÅ¡no i bez pogreÅ¡aka", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Poslana datoteka izlazi iz okvira MAX_FILE_SIZE direktive postavljene u HTML obrascu", "The uploaded file was only partially uploaded" => "Datoteka je poslana samo djelomiÄno", @@ -21,10 +20,10 @@ "1 file uploading" => "1 datoteka se uÄitava", "Upload cancelled." => "Slanje poniÅ¡teno.", "File upload is in progress. Leaving the page now will cancel the upload." => "UÄitavanje datoteke. NapuÅ¡tanjem stranice će prekinuti uÄitavanje.", -"error while scanning" => "greÄka prilikom skeniranja", "Name" => "Naziv", "Size" => "VeliÄina", "Modified" => "Zadnja promjena", +"Upload" => "PoÅ¡alji", "File handling" => "datoteka za rukovanje", "Maximum upload size" => "Maksimalna veliÄina prijenosa", "max. possible: " => "maksimalna moguća: ", diff --git a/apps/files/l10n/hu_HU.php b/apps/files/l10n/hu_HU.php index 57cc0a86302..86fc0f223f9 100644 --- a/apps/files/l10n/hu_HU.php +++ b/apps/files/l10n/hu_HU.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Feltöltés", -"Could not move %s - File with this name already exists" => "%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.", @@ -24,11 +20,12 @@ "replaced {new_name}" => "a(z) {new_name} állományt kicseréltük", "undo" => "visszavonás", "replaced {new_name} with {old_name}" => "{new_name} fájlt kicseréltük ezzel: {old_name}", -"unshared {files}" => "{files} fájl megosztása visszavonva", -"deleted {files}" => "{files} fájl törölve", "'.' is an invalid file name." => "'.' fájlnév érvénytelen.", "File name cannot be empty." => "A fájlnév nem lehet semmi.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Érvénytelen elnevezés. Ezek a karakterek nem használhatók: '\\', '/', '<', '>', ':', '\"', '|', '?' és '*'", +"Your storage is full, files can not be updated or synced anymore!" => "A tároló tele van, a fájlok nem frissÃthetÅ‘ek vagy szinkronizálhatóak a jövÅ‘ben.", +"Your storage is almost full ({usedSpacePercent}%)" => "A tároló majdnem tele van ({usedSpacePercent}%)", +"Your download is being prepared. This might take some time if the files are big." => "Készül a letöltendÅ‘ állomány. Ez eltarthat egy ideig, ha nagyok a fájlok.", "Unable to upload your file as it is a directory or has 0 bytes" => "Nem tölthetÅ‘ fel, mert mappa volt, vagy 0 byte méretű", "Upload Error" => "Feltöltési hiba", "Close" => "Bezárás", @@ -39,8 +36,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "Fájlfeltöltés van folyamatban. Az oldal elhagyása megszakÃtja a feltöltést.", "URL cannot be empty." => "Az URL nem lehet semmi.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Érvénytelen mappanév. A név használata csak a Owncloud számára lehetséges.", -"{count} files scanned" => "{count} fájlt találtunk", -"error while scanning" => "Hiba a fájllista-ellenÅ‘rzés során", "Name" => "Név", "Size" => "Méret", "Modified" => "MódosÃtva", @@ -48,6 +43,7 @@ "{count} folders" => "{count} mappa", "1 file" => "1 fájl", "{count} files" => "{count} fájl", +"Upload" => "Feltöltés", "File handling" => "Fájlkezelés", "Maximum upload size" => "Maximális feltölthetÅ‘ fájlméret", "max. possible: " => "max. lehetséges: ", diff --git a/apps/files/l10n/ia.php b/apps/files/l10n/ia.php index a7babb27d9e..ae614c1bf5d 100644 --- a/apps/files/l10n/ia.php +++ b/apps/files/l10n/ia.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Incargar", "The uploaded file was only partially uploaded" => "Le file incargate solmente esseva incargate partialmente", "No file was uploaded" => "Nulle file esseva incargate", "Missing a temporary folder" => "Manca un dossier temporari", @@ -9,6 +8,7 @@ "Name" => "Nomine", "Size" => "Dimension", "Modified" => "Modificate", +"Upload" => "Incargar", "Maximum upload size" => "Dimension maxime de incargamento", "Save" => "Salveguardar", "New" => "Nove", diff --git a/apps/files/l10n/id.php b/apps/files/l10n/id.php index 46d9ad1a75a..3ebb9983291 100644 --- a/apps/files/l10n/id.php +++ b/apps/files/l10n/id.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Unggah", "There is no error, the file uploaded with success" => "Tidak ada galat, berkas sukses diunggah", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "File yang diunggah melampaui directive MAX_FILE_SIZE yang disebutan dalam form HTML.", "The uploaded file was only partially uploaded" => "Berkas hanya diunggah sebagian", @@ -21,6 +20,7 @@ "Name" => "Nama", "Size" => "Ukuran", "Modified" => "Dimodifikasi", +"Upload" => "Unggah", "File handling" => "Penanganan berkas", "Maximum upload size" => "Ukuran unggah maksimum", "max. possible: " => "Kemungkinan maks:", diff --git a/apps/files/l10n/is.php b/apps/files/l10n/is.php index c3adf0984e5..43c10ef236e 100644 --- a/apps/files/l10n/is.php +++ b/apps/files/l10n/is.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Senda inn", -"Could not move %s - File with this name already exists" => "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:", @@ -24,8 +20,6 @@ "replaced {new_name}" => "endurskýrði {new_name}", "undo" => "afturkalla", "replaced {new_name} with {old_name}" => "yfirskrifaði {new_name} með {old_name}", -"unshared {files}" => "Hætti við deilingu á {files}", -"deleted {files}" => "eyddi {files}", "'.' is an invalid file name." => "'.' er ekki leyfilegt nafn.", "File name cannot be empty." => "Nafn skráar má ekki vera tómt", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ógilt nafn, táknin '\\', '/', '<', '>', ':', '\"', '|', '?' og '*' eru ekki leyfð.", @@ -39,8 +33,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "Innsending à gangi. Ef þú ferð af þessari sÃðu mun innsending misheppnast.", "URL cannot be empty." => "Vefslóð má ekki vera tóm.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Óleyfilegt nafn á möppu. Nafnið 'Shared' er frátekið fyrir Owncloud", -"{count} files scanned" => "{count} skrár skimaðar", -"error while scanning" => "villa við skimun", "Name" => "Nafn", "Size" => "Stærð", "Modified" => "Breytt", @@ -48,6 +40,7 @@ "{count} folders" => "{count} möppur", "1 file" => "1 skrá", "{count} files" => "{count} skrár", +"Upload" => "Senda inn", "File handling" => "Meðhöndlun skrár", "Maximum upload size" => "Hámarks stærð innsendingar", "max. possible: " => "hámark mögulegt: ", diff --git a/apps/files/l10n/it.php b/apps/files/l10n/it.php index 9e211ae21ac..e6fc1e81a96 100644 --- a/apps/files/l10n/it.php +++ b/apps/files/l10n/it.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Carica", -"Could not move %s - File with this name already exists" => "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:", @@ -24,11 +20,11 @@ "replaced {new_name}" => "sostituito {new_name}", "undo" => "annulla", "replaced {new_name} with {old_name}" => "sostituito {new_name} con {old_name}", -"unshared {files}" => "non condivisi {files}", -"deleted {files}" => "eliminati {files}", "'.' is an invalid file name." => "'.' non è un nome file valido.", "File name cannot be empty." => "Il nome del file non può essere vuoto.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome non valido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non sono consentiti.", +"Your storage is full, files can not be updated or synced anymore!" => "Lo spazio di archiviazione è pieno, i file non possono essere più aggiornati o sincronizzati!", +"Your storage is almost full ({usedSpacePercent}%)" => "Lo spazio di archiviazione è quasi pieno ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "Il tuo scaricamento è in fase di preparazione. Ciò potrebbe richiedere del tempo se i file sono grandi.", "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", @@ -40,8 +36,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento.", "URL cannot be empty." => "L'URL non può essere vuoto.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome della cartella non valido. L'uso di 'Shared' è riservato da ownCloud", -"{count} files scanned" => "{count} file analizzati", -"error while scanning" => "errore durante la scansione", "Name" => "Nome", "Size" => "Dimensione", "Modified" => "Modificato", @@ -49,6 +43,7 @@ "{count} folders" => "{count} cartelle", "1 file" => "1 file", "{count} files" => "{count} file", +"Upload" => "Carica", "File handling" => "Gestione file", "Maximum upload size" => "Dimensione massima upload", "max. possible: " => "numero mass.: ", @@ -67,5 +62,6 @@ "Upload too large" => "Il file caricato è troppo grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "I file che stai provando a caricare superano la dimensione massima consentita su questo server.", "Files are being scanned, please wait." => "Scansione dei file in corso, attendi", -"Current scanning" => "Scansione corrente" +"Current scanning" => "Scansione corrente", +"Upgrading filesystem cache..." => "Aggiornamento della cache del filesystem in corso..." ); diff --git a/apps/files/l10n/ja_JP.php b/apps/files/l10n/ja_JP.php index 548263f54a3..792bf7cbf99 100644 --- a/apps/files/l10n/ja_JP.php +++ b/apps/files/l10n/ja_JP.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "アップãƒãƒ¼ãƒ‰", -"Could not move %s - File with this name already exists" => "%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 ã«è¨å®šã•れãŸã‚µã‚¤ã‚ºã‚’è¶…ãˆã¦ã„ã¾ã™:", @@ -24,11 +20,11 @@ "replaced {new_name}" => "{new_name} ã‚’ç½®æ›", "undo" => "å…ƒã«æˆ»ã™", "replaced {new_name} with {old_name}" => "{old_name} ã‚’ {new_name} ã«ç½®æ›", -"unshared {files}" => "未共有 {files}", -"deleted {files}" => "削除 {files}", "'.' is an invalid file name." => "'.' ã¯ç„¡åйãªãƒ•ァイルåã§ã™ã€‚", "File name cannot be empty." => "ファイルåを空ã«ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "無効ãªåå‰ã€'\\', '/', '<', '>', ':', '\"', '|', '?', '*' ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。", +"Your storage is full, files can not be updated or synced anymore!" => "ã‚ãªãŸã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã¯ä¸€æ¯ã§ã™ã€‚ãƒ•ã‚¡ã‚¤ãƒ«ã®æ›´æ–°ã¨åŒæœŸã¯ã‚‚ã†ã§ãã¾ã›ã‚“ï¼", +"Your storage is almost full ({usedSpacePercent}%)" => "ã‚ãªãŸã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã¯ã»ã¼ä¸€æ¯ã§ã™ï¼ˆ{usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "ダウンãƒãƒ¼ãƒ‰ã®æº–å‚™ä¸ã§ã™ã€‚ファイルサイズãŒå¤§ãã„å ´åˆã¯å°‘ã—æ™‚é–“ãŒã‹ã‹ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。", "Unable to upload your file as it is a directory or has 0 bytes" => "ディレクトリもã—ãã¯0ãƒã‚¤ãƒˆã®ãƒ•ァイルã¯ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“", "Upload Error" => "アップãƒãƒ¼ãƒ‰ã‚¨ãƒ©ãƒ¼", @@ -40,8 +36,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "ファイル転é€ã‚’実行ä¸ã§ã™ã€‚今ã“ã®ãƒšãƒ¼ã‚¸ã‹ã‚‰ç§»å‹•ã™ã‚‹ã¨ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ãŒä¸æ¢ã•れã¾ã™ã€‚", "URL cannot be empty." => "URLã¯ç©ºã«ã§ãã¾ã›ã‚“。", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "無効ãªãƒ•ォルダåã§ã™ã€‚'Shared' ã®åˆ©ç”¨ã¯ ownCloud ãŒäºˆç´„済ã¿ã§ã™ã€‚", -"{count} files scanned" => "{count} ファイルをスã‚ャン", -"error while scanning" => "スã‚ャンä¸ã®ã‚¨ãƒ©ãƒ¼", "Name" => "åå‰", "Size" => "サイズ", "Modified" => "更新日時", @@ -49,6 +43,7 @@ "{count} folders" => "{count} フォルダ", "1 file" => "1 ファイル", "{count} files" => "{count} ファイル", +"Upload" => "アップãƒãƒ¼ãƒ‰", "File handling" => "ファイルæ“作", "Maximum upload size" => "最大アップãƒãƒ¼ãƒ‰ã‚µã‚¤ã‚º", "max. possible: " => "最大容é‡: ", diff --git a/apps/files/l10n/ka_GE.php b/apps/files/l10n/ka_GE.php index 3f5a532f6bd..7ab6122c659 100644 --- a/apps/files/l10n/ka_GE.php +++ b/apps/files/l10n/ka_GE.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "áƒáƒ¢áƒ•ირთვáƒ", "There is no error, the file uploaded with success" => "áƒáƒáƒªáƒ“áƒáƒ›áƒ áƒáƒ დáƒáƒ¤áƒ˜áƒ¥áƒ¡áƒ˜áƒ დáƒ, ფáƒáƒ˜áƒšáƒ˜ წáƒáƒ მáƒáƒ¢áƒ”ბით áƒáƒ˜áƒ¢áƒ•ირთáƒ", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "áƒáƒ¢áƒ•ირთული ფáƒáƒ˜áƒšáƒ˜ áƒáƒáƒáƒ ბებს MAX_FILE_SIZE დირექტივáƒáƒ¡, რáƒáƒ›áƒ”ლიც მითითებულირHTML ფáƒáƒ მáƒáƒ¨áƒ˜", "The uploaded file was only partially uploaded" => "áƒáƒ¢áƒ•ირთული ფáƒáƒ˜áƒšáƒ˜ მხáƒáƒšáƒáƒ“ ნáƒáƒ¬áƒ˜áƒšáƒáƒ‘რივ áƒáƒ˜áƒ¢áƒ•ირთáƒ", @@ -17,8 +16,6 @@ "replaced {new_name}" => "{new_name} შეცვლილიáƒ", "undo" => "დáƒáƒ‘რუნებáƒ", "replaced {new_name} with {old_name}" => "{new_name} შეცვლილირ{old_name}–ით", -"unshared {files}" => "გáƒáƒ–იáƒáƒ ებრმáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜ {files}", -"deleted {files}" => "წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ {files}", "Unable to upload your file as it is a directory or has 0 bytes" => "თქვენი ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•ირთვრვერმáƒáƒ®áƒ”რხდáƒ. ის áƒáƒ ის სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე დრშეიცáƒáƒ•ს 0 ბáƒáƒ˜áƒ¢áƒ¡", "Upload Error" => "შეცდáƒáƒ›áƒ áƒáƒ¢áƒ•ირთვისáƒáƒ¡", "Close" => "დáƒáƒ®áƒ£áƒ ვáƒ", @@ -27,8 +24,6 @@ "{count} files uploading" => "{count} ფáƒáƒ˜áƒšáƒ˜ იტვირთებáƒ", "Upload cancelled." => "áƒáƒ¢áƒ•ირთვრშეჩერებულ იქნáƒ.", "File upload is in progress. Leaving the page now will cancel the upload." => "მიმდინáƒáƒ ეáƒáƒ‘ს ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•ირთვáƒ. სხვრგვერდზე გáƒáƒ“áƒáƒ¡áƒ•ლრგáƒáƒ›áƒáƒ˜áƒ¬áƒ•ევს áƒáƒ¢áƒ•ირთვის შეჩერებáƒáƒ¡", -"{count} files scanned" => "{count} ფáƒáƒ˜áƒšáƒ˜ სკáƒáƒœáƒ˜áƒ ებულიáƒ", -"error while scanning" => "შეცდáƒáƒ›áƒ სკáƒáƒœáƒ˜áƒ ებისáƒáƒ¡", "Name" => "სáƒáƒ®áƒ”ლი", "Size" => "ზáƒáƒ›áƒ", "Modified" => "შეცვლილიáƒ", @@ -36,6 +31,7 @@ "{count} folders" => "{count} სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე", "1 file" => "1 ფáƒáƒ˜áƒšáƒ˜", "{count} files" => "{count} ფáƒáƒ˜áƒšáƒ˜", +"Upload" => "áƒáƒ¢áƒ•ირთვáƒ", "File handling" => "ფáƒáƒ˜áƒšáƒ˜áƒ¡ დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒ", "Maximum upload size" => "მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒ£áƒ› áƒáƒ¢áƒ•ირთის ზáƒáƒ›áƒ", "max. possible: " => "მáƒáƒ¥áƒ¡. შესáƒáƒ«áƒšáƒ”ბელი:", diff --git a/apps/files/l10n/ko.php b/apps/files/l10n/ko.php index 891b036761d..7774aeea31c 100644 --- a/apps/files/l10n/ko.php +++ b/apps/files/l10n/ko.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "업로드", -"Could not move %s - File with this name already exists" => "%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보다 í½ë‹ˆë‹¤:", @@ -11,8 +7,8 @@ "No file was uploaded" => "ì—…ë¡œë“œëœ íŒŒì¼ ì—†ìŒ", "Missing a temporary folder" => "임시 í´ë”ê°€ 사ë¼ì§", "Failed to write to disk" => "디스í¬ì— ì“°ì§€ 못했습니다", -"Not enough space available" => "ì—¬ìœ ê³µê°„ì´ ë¶€ì¡±í•©ë‹ˆë‹¤", -"Invalid directory." => "올바르지 ì•Šì€ ë””ë ‰í† ë¦¬ìž…ë‹ˆë‹¤.", +"Not enough space available" => "ì—¬ìœ ê³µê°„ì´ ë¶€ì¡±í•©ë‹ˆë‹¤", +"Invalid directory." => "올바르지 ì•Šì€ ë””ë ‰í„°ë¦¬ìž…ë‹ˆë‹¤.", "Files" => "파ì¼", "Unshare" => "ê³µìœ í•´ì œ", "Delete" => "ì‚ì œ", @@ -24,11 +20,12 @@ "replaced {new_name}" => "{new_name}ì„(를) 대체함", "undo" => "실행 취소", "replaced {new_name} with {old_name}" => "{old_name}ì´(ê°€) {new_name}(으)로 대체ë¨", -"unshared {files}" => "{files} ê³µìœ í•´ì œë¨", -"deleted {files}" => "{files} ì‚ì œë¨", "'.' is an invalid file name." => "'.' 는 올바르지 ì•Šì€ íŒŒì¼ ì´ë¦„ 입니다.", -"File name cannot be empty." => "파ì¼ì´ë¦„ì€ ê³µëž€ì´ ë 수 없습니다.", +"File name cannot be empty." => "íŒŒì¼ ì´ë¦„ì´ ë¹„ì–´ ìžˆì„ ìˆ˜ 없습니다.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "í´ë” ì´ë¦„ì´ ì˜¬ë°”ë¥´ì§€ 않습니다. ì´ë¦„ì— ë¬¸ìž '\\', '/', '<', '>', ':', '\"', '|', '? ', '*'는 ì‚¬ìš©í• ìˆ˜ 없습니다.", +"Your storage is full, files can not be updated or synced anymore!" => "ì €ìž¥ ê³µê°„ì´ ê°€ë“ ì°¼ìŠµë‹ˆë‹¤. 파ì¼ì„ ì—…ë°ì´íŠ¸í•˜ê±°ë‚˜ ë™ê¸°í™”í• ìˆ˜ 없습니다!", +"Your storage is almost full ({usedSpacePercent}%)" => "ì €ìž¥ ê³µê°„ì´ ê±°ì˜ ê°€ë“ ì°¼ìŠµë‹ˆë‹¤ ({usedSpacePercent}%)", +"Your download is being prepared. This might take some time if the files are big." => "다운로드가 준비 중입니다. íŒŒì¼ í¬ê¸°ê°€ í¬ë‹¤ë©´ ì‹œê°„ì´ ì˜¤ëž˜ 걸릴 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.", "Unable to upload your file as it is a directory or has 0 bytes" => "ì´ íŒŒì¼ì€ ë””ë ‰í„°ë¦¬ì´ê±°ë‚˜ 비어 있기 ë•Œë¬¸ì— ì—…ë¡œë“œí• ìˆ˜ 없습니다", "Upload Error" => "업로드 오류", "Close" => "닫기", @@ -39,8 +36,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "íŒŒì¼ ì—…ë¡œë“œê°€ ì§„í–‰ 중입니다. ì´ íŽ˜ì´ì§€ë¥¼ 벗어나면 업로드가 취소ë©ë‹ˆë‹¤.", "URL cannot be empty." => "URLì„ ìž…ë ¥í•´ì•¼ 합니다.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "í´ë” ì´ë¦„ì´ ìœ íš¨í•˜ì§€ 않습니다. ", -"{count} files scanned" => "íŒŒì¼ {count}ê°œ 검색ë¨", -"error while scanning" => "검색 중 오류 ë°œìƒ", "Name" => "ì´ë¦„", "Size" => "í¬ê¸°", "Modified" => "ìˆ˜ì •ë¨", @@ -48,6 +43,7 @@ "{count} folders" => "í´ë” {count}ê°œ", "1 file" => "íŒŒì¼ 1ê°œ", "{count} files" => "íŒŒì¼ {count}ê°œ", +"Upload" => "업로드", "File handling" => "íŒŒì¼ ì²˜ë¦¬", "Maximum upload size" => "최대 업로드 í¬ê¸°", "max. possible: " => "최대 가능:", @@ -66,5 +62,6 @@ "Upload too large" => "업로드 용량 초과", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "ì´ íŒŒì¼ì´ 서버ì—서 허용하는 최대 업로드 가능 용량보다 í½ë‹ˆë‹¤.", "Files are being scanned, please wait." => "파ì¼ì„ ê²€ìƒ‰í•˜ê³ ìžˆìŠµë‹ˆë‹¤. ê¸°ë‹¤ë ¤ 주ì‹ì‹œì˜¤.", -"Current scanning" => "현재 검색" +"Current scanning" => "현재 검색", +"Upgrading filesystem cache..." => "íŒŒì¼ ì‹œìŠ¤í…œ ìºì‹œ ì—…ê·¸ë ˆì´ë“œ 중..." ); diff --git a/apps/files/l10n/ku_IQ.php b/apps/files/l10n/ku_IQ.php index ddd2c142788..5c5a3d6bd8f 100644 --- a/apps/files/l10n/ku_IQ.php +++ b/apps/files/l10n/ku_IQ.php @@ -1,8 +1,8 @@ <?php $TRANSLATIONS = array( -"Upload" => "بارکردن", "Close" => "داخستن", "URL cannot be empty." => "ناونیشانی به‌سته‌ر نابێت به‌تاڵ بێت.", "Name" => "ناو", +"Upload" => "بارکردن", "Save" => "پاشکه‌وتکردن", "Folder" => "بوخچه", "Download" => "داگرتن" diff --git a/apps/files/l10n/lb.php b/apps/files/l10n/lb.php index b041079f0d8..79ef4bc9417 100644 --- a/apps/files/l10n/lb.php +++ b/apps/files/l10n/lb.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Eroplueden", "There is no error, the file uploaded with success" => "Keen Feeler, Datei ass komplett ropgelueden ginn", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Déi ropgelueden Datei ass méi grouss wei d'MAX_FILE_SIZE Eegenschaft déi an der HTML form uginn ass", "The uploaded file was only partially uploaded" => "Déi ropgelueden Datei ass nëmmen hallef ropgelueden ginn", @@ -7,6 +6,7 @@ "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", @@ -19,6 +19,7 @@ "Name" => "Numm", "Size" => "Gréisst", "Modified" => "Geännert", +"Upload" => "Eroplueden", "File handling" => "Fichier handling", "Maximum upload size" => "Maximum Upload Gréisst ", "max. possible: " => "max. méiglech:", diff --git a/apps/files/l10n/lt_LT.php b/apps/files/l10n/lt_LT.php index 22490f8e9fd..f4ad655f421 100644 --- a/apps/files/l10n/lt_LT.php +++ b/apps/files/l10n/lt_LT.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Ä®kelti", "There is no error, the file uploaded with success" => "Klaidų nÄ—ra, failas įkeltas sÄ—kmingai", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Ä®keliamo failo dydis virÅ¡ija MAX_FILE_SIZE parametrÄ…, kuris yra nustatytas HTML formoje", "The uploaded file was only partially uploaded" => "Failas buvo įkeltas tik dalinai", @@ -17,8 +16,6 @@ "replaced {new_name}" => "pakeiskite {new_name}", "undo" => "anuliuoti", "replaced {new_name} with {old_name}" => "pakeiskite {new_name} į {old_name}", -"unshared {files}" => "nebesidalinti {files}", -"deleted {files}" => "iÅ¡trinti {files}", "Unable to upload your file as it is a directory or has 0 bytes" => "Neįmanoma įkelti failo - jo dydis gali bÅ«ti 0 bitų arba tai katalogas", "Upload Error" => "Ä®kÄ—limo klaida", "Close" => "Užverti", @@ -27,8 +24,6 @@ "{count} files uploading" => "{count} įkeliami failai", "Upload cancelled." => "Ä®kÄ—limas atÅ¡auktas.", "File upload is in progress. Leaving the page now will cancel the upload." => "Failo įkÄ—limas pradÄ—tas. Jei paliksite šį puslapį, įkÄ—limas nutrÅ«ks.", -"{count} files scanned" => "{count} praskanuoti failai", -"error while scanning" => "klaida skanuojant", "Name" => "Pavadinimas", "Size" => "Dydis", "Modified" => "Pakeista", @@ -36,6 +31,7 @@ "{count} folders" => "{count} aplankalai", "1 file" => "1 failas", "{count} files" => "{count} failai", +"Upload" => "Ä®kelti", "File handling" => "Failų tvarkymas", "Maximum upload size" => "Maksimalus įkeliamo failo dydis", "max. possible: " => "maks. galima:", diff --git a/apps/files/l10n/lv.php b/apps/files/l10n/lv.php index 589b7020c4a..b175b19bba9 100644 --- a/apps/files/l10n/lv.php +++ b/apps/files/l10n/lv.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "AugÅ¡uplÄdet", "There is no error, the file uploaded with success" => "Viss kÄrtÄ«bÄ, augÅ¡upielÄde veiksmÄ«ga", "No file was uploaded" => "Neviens fails netika augÅ¡uplÄdÄ“ts", "Missing a temporary folder" => "TrÅ«kst pagaidu mapes", @@ -20,6 +19,7 @@ "Name" => "Nosaukums", "Size" => "IzmÄ“rs", "Modified" => "IzmainÄ«ts", +"Upload" => "AugÅ¡uplÄdet", "File handling" => "Failu pÄrvaldÄ«ba", "Maximum upload size" => "MaksimÄlais failu augÅ¡uplÄdes apjoms", "max. possible: " => "maksÄ«mÄlais iespÄ“jamais:", diff --git a/apps/files/l10n/mk.php b/apps/files/l10n/mk.php index 2916e86a94d..2580d1e6a97 100644 --- a/apps/files/l10n/mk.php +++ b/apps/files/l10n/mk.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Подигни", "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:", @@ -19,8 +18,6 @@ "replaced {new_name}" => "земенета {new_name}", "undo" => "врати", "replaced {new_name} with {old_name}" => "заменета {new_name} Ñо {old_name}", -"unshared {files}" => "без Ñподелување {files}", -"deleted {files}" => "избришани {files}", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ðеправилно име. , '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' не Ñе дозволени.", "Unable to upload your file as it is a directory or has 0 bytes" => "Ðе може да Ñе преземе вашата датотека бидејќи фолдерот во кој Ñе наоѓа фајлот има големина од 0 бајти", "Upload Error" => "Грешка при преземање", @@ -31,8 +28,6 @@ "Upload cancelled." => "Преземањето е прекинато.", "File upload is in progress. Leaving the page now will cancel the upload." => "Подигање на датотека е во тек. Ðапуштење на Ñтраницата ќе го прекине.", "URL cannot be empty." => "ÐдреÑата неможе да биде празна.", -"{count} files scanned" => "{count} датотеки Ñкенирани", -"error while scanning" => "грешка при Ñкенирање", "Name" => "Име", "Size" => "Големина", "Modified" => "Променето", @@ -40,6 +35,7 @@ "{count} folders" => "{count} папки", "1 file" => "1 датотека", "{count} files" => "{count} датотеки", +"Upload" => "Подигни", "File handling" => "Ракување Ñо датотеки", "Maximum upload size" => "МакÑимална големина за подигање", "max. possible: " => "макÑ. можно:", diff --git a/apps/files/l10n/ms_MY.php b/apps/files/l10n/ms_MY.php index 23a2783cd9a..4ac26d80918 100644 --- a/apps/files/l10n/ms_MY.php +++ b/apps/files/l10n/ms_MY.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Muat naik", "No file was uploaded. Unknown error" => "Tiada fail dimuatnaik. Ralat tidak diketahui.", "There is no error, the file uploaded with success" => "Tiada ralat, fail berjaya dimuat naik.", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Fail yang dimuat naik melebihi MAX_FILE_SIZE yang dinyatakan dalam form HTML ", @@ -19,6 +18,7 @@ "Name" => "Nama ", "Size" => "Saiz", "Modified" => "Dimodifikasi", +"Upload" => "Muat naik", "File handling" => "Pengendalian fail", "Maximum upload size" => "Saiz maksimum muat naik", "max. possible: " => "maksimum:", diff --git a/apps/files/l10n/nb_NO.php b/apps/files/l10n/nb_NO.php index 48b873e1ef0..a6ba6e9c03f 100644 --- a/apps/files/l10n/nb_NO.php +++ b/apps/files/l10n/nb_NO.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Last opp", "No file was uploaded. Unknown error" => "Ingen filer ble lastet opp. Ukjent feil.", "There is no error, the file uploaded with success" => "Det er ingen feil. Filen ble lastet opp.", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Filstørrelsen overskrider maksgrensen pÃ¥ MAX_FILE_SIZE som ble oppgitt i HTML-skjemaet", @@ -18,7 +17,6 @@ "replaced {new_name}" => "erstatt {new_name}", "undo" => "angre", "replaced {new_name} with {old_name}" => "erstatt {new_name} med {old_name}", -"deleted {files}" => "slettet {files}", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ugyldig navn, '\\', '/', '<', '>', ':', '\"', '|', '?' og '*' er ikke tillatt.", "Unable to upload your file as it is a directory or has 0 bytes" => "Kan ikke laste opp filen din siden det er en mappe eller den har 0 bytes", "Upload Error" => "Opplasting feilet", @@ -29,8 +27,6 @@ "Upload cancelled." => "Opplasting avbrutt.", "File upload is in progress. Leaving the page now will cancel the upload." => "Filopplasting pÃ¥gÃ¥r. Forlater du siden nÃ¥ avbrytes opplastingen.", "URL cannot be empty." => "URL-en kan ikke være tom.", -"{count} files scanned" => "{count} filer lest inn", -"error while scanning" => "feil under skanning", "Name" => "Navn", "Size" => "Størrelse", "Modified" => "Endret", @@ -38,6 +34,7 @@ "{count} folders" => "{count} mapper", "1 file" => "1 fil", "{count} files" => "{count} filer", +"Upload" => "Last opp", "File handling" => "FilhÃ¥ndtering", "Maximum upload size" => "Maksimum opplastingsstørrelse", "max. possible: " => "max. mulige:", diff --git a/apps/files/l10n/nl.php b/apps/files/l10n/nl.php index 4a9685e06c9..7f2e8ec2bf4 100644 --- a/apps/files/l10n/nl.php +++ b/apps/files/l10n/nl.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Upload", -"Could not move %s - File with this name already exists" => "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:", @@ -24,8 +20,6 @@ "replaced {new_name}" => "verving {new_name}", "undo" => "ongedaan maken", "replaced {new_name} with {old_name}" => "verving {new_name} met {old_name}", -"unshared {files}" => "delen gestopt {files}", -"deleted {files}" => "verwijderde {files}", "'.' is an invalid file name." => "'.' is een ongeldige bestandsnaam.", "File name cannot be empty." => "Bestandsnaam kan niet leeg zijn.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Onjuiste naam; '\\', '/', '<', '>', ':', '\"', '|', '?' en '*' zijn niet toegestaan.", @@ -40,8 +34,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.", "URL cannot be empty." => "URL kan niet leeg zijn.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ongeldige mapnaam. Gebruik van'Gedeeld' is voorbehouden aan Owncloud", -"{count} files scanned" => "{count} bestanden gescanned", -"error while scanning" => "Fout tijdens het scannen", "Name" => "Naam", "Size" => "Bestandsgrootte", "Modified" => "Laatst aangepast", @@ -49,6 +41,7 @@ "{count} folders" => "{count} mappen", "1 file" => "1 bestand", "{count} files" => "{count} bestanden", +"Upload" => "Upload", "File handling" => "Bestand", "Maximum upload size" => "Maximale bestandsgrootte voor uploads", "max. possible: " => "max. mogelijk: ", diff --git a/apps/files/l10n/nn_NO.php b/apps/files/l10n/nn_NO.php index 8abbe1b6cd3..8a4ab91ea7e 100644 --- a/apps/files/l10n/nn_NO.php +++ b/apps/files/l10n/nn_NO.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Last opp", "There is no error, the file uploaded with success" => "Ingen feil, fila vart lasta opp", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Den opplasta fila er større enn variabelen MAX_FILE_SIZE i HTML-skjemaet", "The uploaded file was only partially uploaded" => "Fila vart berre delvis lasta opp", @@ -11,6 +10,7 @@ "Name" => "Namn", "Size" => "Storleik", "Modified" => "Endra", +"Upload" => "Last opp", "Maximum upload size" => "Maksimal opplastingsstorleik", "Save" => "Lagre", "New" => "Ny", diff --git a/apps/files/l10n/oc.php b/apps/files/l10n/oc.php index 87ec98e4cf8..78045b299ed 100644 --- a/apps/files/l10n/oc.php +++ b/apps/files/l10n/oc.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Amontcarga", "There is no error, the file uploaded with success" => "Amontcargament capitat, pas d'errors", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Lo fichièr amontcargat es mai gròs que la directiva «MAX_FILE_SIZE» especifiada dins lo formulari HTML", "The uploaded file was only partially uploaded" => "Lo fichièr foguèt pas completament amontcargat", @@ -20,10 +19,10 @@ "1 file uploading" => "1 fichièr al amontcargar", "Upload cancelled." => "Amontcargar anullat.", "File upload is in progress. Leaving the page now will cancel the upload." => "Un amontcargar es a se far. Daissar aquesta pagina ara tamparà lo cargament. ", -"error while scanning" => "error pendant l'exploracion", "Name" => "Nom", "Size" => "Talha", "Modified" => "Modificat", +"Upload" => "Amontcarga", "File handling" => "Manejament de fichièr", "Maximum upload size" => "Talha maximum d'amontcargament", "max. possible: " => "max. possible: ", diff --git a/apps/files/l10n/pl.php b/apps/files/l10n/pl.php index 4166bac545d..6855850f0da 100644 --- a/apps/files/l10n/pl.php +++ b/apps/files/l10n/pl.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "PrzeÅ›lij", -"Could not move %s - File with this name already exists" => "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: ", @@ -24,8 +20,6 @@ "replaced {new_name}" => "zastÄ…piony {new_name}", "undo" => "wróć", "replaced {new_name} with {old_name}" => "zastÄ…piony {new_name} z {old_name}", -"unshared {files}" => "UdostÄ™pniane wstrzymane {files}", -"deleted {files}" => "usuniÄ™to {files}", "'.' is an invalid file name." => "'.' jest nieprawidÅ‚owÄ… nazwÄ… pliku.", "File name cannot be empty." => "Nazwa pliku nie może być pusta.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Niepoprawna nazwa, Znaki '\\', '/', '<', '>', ':', '\"', '|', '?' oraz '*'sÄ… niedozwolone.", @@ -39,8 +33,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "WysyÅ‚anie pliku jest w toku. Teraz opuszczajÄ…c stronÄ™ wysyÅ‚anie zostanie anulowane.", "URL cannot be empty." => "URL nie może być pusty.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nazwa folderu nieprawidÅ‚owa. Wykorzystanie \"Shared\" jest zarezerwowane przez Owncloud", -"{count} files scanned" => "{count} pliki skanowane", -"error while scanning" => "WystÄ…piÅ‚ błąd podczas skanowania", "Name" => "Nazwa", "Size" => "Rozmiar", "Modified" => "Czas modyfikacji", @@ -48,6 +40,7 @@ "{count} folders" => "{count} foldery", "1 file" => "1 plik", "{count} files" => "{count} pliki", +"Upload" => "PrzeÅ›lij", "File handling" => "ZarzÄ…dzanie plikami", "Maximum upload size" => "Maksymalny rozmiar wysyÅ‚anego pliku", "max. possible: " => "max. możliwych", diff --git a/apps/files/l10n/pt_BR.php b/apps/files/l10n/pt_BR.php index b199ded9fe0..361e81052b9 100644 --- a/apps/files/l10n/pt_BR.php +++ b/apps/files/l10n/pt_BR.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Carregar", "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: ", @@ -8,6 +7,7 @@ "No file was uploaded" => "Nenhum arquivo foi transferido", "Missing a temporary folder" => "Pasta temporária não encontrada", "Failed to write to disk" => "Falha ao escrever no disco", +"Invalid directory." => "Diretório inválido.", "Files" => "Arquivos", "Unshare" => "Descompartilhar", "Delete" => "Excluir", @@ -19,9 +19,10 @@ "replaced {new_name}" => "substituÃdo {new_name}", "undo" => "desfazer", "replaced {new_name} with {old_name}" => "SubstituÃdo {old_name} por {new_name} ", -"unshared {files}" => "{files} não compartilhados", -"deleted {files}" => "{files} apagados", +"'.' is an invalid file name." => "'.' é um nome de arquivo inválido.", +"File name cannot be empty." => "O nome do arquivo não pode estar vazio.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome inválido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' não são permitidos.", +"Your download is being prepared. This might take some time if the files are big." => "Seu download está sendo preparado. Isto pode levar algum tempo se os arquivos forem grandes.", "Unable to upload your file as it is a directory or has 0 bytes" => "ImpossÃvel enviar seus arquivo como diretório ou ele tem 0 bytes.", "Upload Error" => "Erro de envio", "Close" => "Fechar", @@ -31,8 +32,7 @@ "Upload cancelled." => "Envio cancelado.", "File upload is in progress. Leaving the page now will cancel the upload." => "Upload em andamento. Sair da página agora resultará no cancelamento do envio.", "URL cannot be empty." => "URL não pode ficar em branco", -"{count} files scanned" => "{count} arquivos scaneados", -"error while scanning" => "erro durante verificação", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de pasta inválido. O uso de 'Shared' é reservado para o Owncloud", "Name" => "Nome", "Size" => "Tamanho", "Modified" => "Modificado", @@ -40,6 +40,7 @@ "{count} folders" => "{count} pastas", "1 file" => "1 arquivo", "{count} files" => "{count} arquivos", +"Upload" => "Carregar", "File handling" => "Tratamento de Arquivo", "Maximum upload size" => "Tamanho máximo para carregar", "max. possible: " => "max. possÃvel:", diff --git a/apps/files/l10n/pt_PT.php b/apps/files/l10n/pt_PT.php index 0ed13fa9983..1415b71e7f5 100644 --- a/apps/files/l10n/pt_PT.php +++ b/apps/files/l10n/pt_PT.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Enviar", -"Could not move %s - File with this name already exists" => "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", @@ -19,16 +15,16 @@ "Rename" => "Renomear", "{new_name} already exists" => "O nome {new_name} já existe", "replace" => "substituir", -"suggest name" => "Sugira um nome", +"suggest name" => "sugira um nome", "cancel" => "cancelar", "replaced {new_name}" => "{new_name} substituido", "undo" => "desfazer", "replaced {new_name} with {old_name}" => "substituido {new_name} por {old_name}", -"unshared {files}" => "{files} não partilhado(s)", -"deleted {files}" => "{files} eliminado(s)", "'.' is an invalid file name." => "'.' não é um nome de ficheiro válido!", "File name cannot be empty." => "O nome do ficheiro não pode estar vazio.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome Inválido, os caracteres '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' não são permitidos.", +"Your storage is full, files can not be updated or synced anymore!" => "O seu armazenamento está cheio, os ficheiros não podem ser sincronizados.", +"Your storage is almost full ({usedSpacePercent}%)" => "O seu espaço de armazenamento está quase cheiro ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "O seu download está a ser preparado. Este processo pode demorar algum tempo se os ficheiros forem grandes.", "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", @@ -36,12 +32,10 @@ "Pending" => "Pendente", "1 file uploading" => "A enviar 1 ficheiro", "{count} files uploading" => "A carregar {count} ficheiros", -"Upload cancelled." => "O envio foi cancelado.", +"Upload cancelled." => "Envio cancelado.", "File upload is in progress. Leaving the page now will cancel the upload." => "Envio de ficheiro em progresso. Irá cancelar o envio se sair da página agora.", "URL cannot be empty." => "O URL não pode estar vazio.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de pasta inválido. O Uso de 'shared' é reservado para o ownCloud", -"{count} files scanned" => "{count} ficheiros analisados", -"error while scanning" => "erro ao analisar", "Name" => "Nome", "Size" => "Tamanho", "Modified" => "Modificado", @@ -49,6 +43,7 @@ "{count} folders" => "{count} pastas", "1 file" => "1 ficheiro", "{count} files" => "{count} ficheiros", +"Upload" => "Enviar", "File handling" => "Manuseamento de ficheiros", "Maximum upload size" => "Tamanho máximo de envio", "max. possible: " => "max. possivel: ", @@ -67,5 +62,6 @@ "Upload too large" => "Envio muito grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os ficheiros que está a tentar enviar excedem o tamanho máximo de envio permitido neste servidor.", "Files are being scanned, please wait." => "Os ficheiros estão a ser analisados, por favor aguarde.", -"Current scanning" => "Análise actual" +"Current scanning" => "Análise actual", +"Upgrading filesystem cache..." => "Atualizar cache do sistema de ficheiros..." ); diff --git a/apps/files/l10n/ro.php b/apps/files/l10n/ro.php index fdba003bf3e..7837b1f5b30 100644 --- a/apps/files/l10n/ro.php +++ b/apps/files/l10n/ro.php @@ -1,7 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "ÃŽncarcă", -"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: ", @@ -23,11 +20,10 @@ "replaced {new_name}" => "inlocuit {new_name}", "undo" => "Anulează ultima acÈ›iune", "replaced {new_name} with {old_name}" => "{new_name} inlocuit cu {old_name}", -"unshared {files}" => "nedistribuit {files}", -"deleted {files}" => "Sterse {files}", "'.' is an invalid file name." => "'.' este un nume invalid de fiÈ™ier.", "File name cannot be empty." => "Numele fiÈ™ierului nu poate rămâne gol.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nume invalid, '\\', '/', '<', '>', ':', '\"', '|', '?' si '*' nu sunt permise.", +"Your download is being prepared. This might take some time if the files are big." => "Se pregăteÈ™te descărcarea. Aceasta poate să dureze ceva timp dacă fiÈ™ierele sunt mari.", "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", @@ -38,8 +34,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "FiÈ™ierul este în curs de încărcare. Părăsirea paginii va întrerupe încărcarea.", "URL cannot be empty." => "Adresa URL nu poate fi goală.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Invalid folder name. Usage of 'Shared' is reserved by Ownclou", -"{count} files scanned" => "{count} fisiere scanate", -"error while scanning" => "eroare la scanarea", "Name" => "Nume", "Size" => "Dimensiune", "Modified" => "Modificat", @@ -47,6 +41,7 @@ "{count} folders" => "{count} foldare", "1 file" => "1 fisier", "{count} files" => "{count} fisiere", +"Upload" => "ÃŽncarcă", "File handling" => "Manipulare fiÈ™iere", "Maximum upload size" => "Dimensiune maximă admisă la încărcare", "max. possible: " => "max. posibil:", diff --git a/apps/files/l10n/ru.php b/apps/files/l10n/ru.php index cb17476b9f8..716afa5f29a 100644 --- a/apps/files/l10n/ru.php +++ b/apps/files/l10n/ru.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Загрузить", -"Could not move %s - File with this name already exists" => "Ðевозможно перемеÑтить %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:", @@ -24,8 +20,6 @@ "replaced {new_name}" => "заменено {new_name}", "undo" => "отмена", "replaced {new_name} with {old_name}" => "заменено {new_name} на {old_name}", -"unshared {files}" => "не опубликованные {files}", -"deleted {files}" => "удаленные {files}", "'.' is an invalid file name." => "'.' - неправильное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°.", "File name cannot be empty." => "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° не может быть пуÑтым.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ðеправильное имÑ, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' недопуÑтимы.", @@ -39,8 +33,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "Файл в процеÑÑе загрузки. Покинув Ñтраницу вы прервёте загрузку.", "URL cannot be empty." => "СÑылка не может быть пуÑтой.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ðеправильное Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°. Ð˜Ð¼Ñ 'Shared' зарезервировано.", -"{count} files scanned" => "{count} файлов проÑканировано", -"error while scanning" => "ошибка во Ð²Ñ€ÐµÐ¼Ñ ÑанированиÑ", "Name" => "Ðазвание", "Size" => "Размер", "Modified" => "Изменён", @@ -48,6 +40,7 @@ "{count} folders" => "{count} папок", "1 file" => "1 файл", "{count} files" => "{count} файлов", +"Upload" => "Загрузить", "File handling" => "Управление файлами", "Maximum upload size" => "МакÑимальный размер загружаемого файла", "max. possible: " => "макÑ. возможно: ", diff --git a/apps/files/l10n/ru_RU.php b/apps/files/l10n/ru_RU.php index 4f8bd1d5b95..e1952567d31 100644 --- a/apps/files/l10n/ru_RU.php +++ b/apps/files/l10n/ru_RU.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Загрузить ", "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:", @@ -8,6 +7,8 @@ "No file was uploaded" => "Файл не был загружен", "Missing a temporary folder" => "ОтÑутÑтвует Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¿Ð°Ð¿ÐºÐ°", "Failed to write to disk" => "Ðе удалоÑÑŒ запиÑать на диÑк", +"Not enough space available" => "Ðе доÑтаточно Ñвободного меÑта", +"Invalid directory." => "Ðеверный каталог.", "Files" => "Файлы", "Unshare" => "Скрыть", "Delete" => "Удалить", @@ -19,8 +20,8 @@ "replaced {new_name}" => "заменено {новое_имÑ}", "undo" => "отменить дейÑтвие", "replaced {new_name} with {old_name}" => "заменено {новое_имÑ} Ñ {Ñтарое_имÑ}", -"unshared {files}" => "CовмеÑтное иÑпользование прекращено {файлы}", -"deleted {files}" => "удалено {файлы}", +"'.' is an invalid file name." => "'.' ÑвлÑетÑÑ Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¼ именем файла.", +"File name cannot be empty." => "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° не может быть пуÑтым.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ðекорректное имÑ, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' не допуÑтимы.", "Unable to upload your file as it is a directory or has 0 bytes" => "Ðевозможно загрузить файл,\n так как он имеет нулевой размер или ÑвлÑетÑÑ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸ÐµÐ¹", "Upload Error" => "Ошибка загрузки", @@ -31,8 +32,7 @@ "Upload cancelled." => "Загрузка отменена", "File upload is in progress. Leaving the page now will cancel the upload." => "ПроцеÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ файла. ЕÑли покинуть Ñтраницу ÑейчаÑ, загрузка будет отменена.", "URL cannot be empty." => "URL не должен быть пуÑтым.", -"{count} files scanned" => "{количеÑтво} файлов отÑканировано", -"error while scanning" => "ошибка при Ñканировании", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ðеверное Ð¸Ð¼Ñ Ð¿Ð°Ð¿ÐºÐ¸. ИÑпользование Ð½Ð°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ 'Опубликовано' зарезервировано Owncloud", "Name" => "ИмÑ", "Size" => "Размер", "Modified" => "Изменен", @@ -40,6 +40,7 @@ "{count} folders" => "{количеÑтво} папок", "1 file" => "1 файл", "{count} files" => "{количеÑтво} файлов", +"Upload" => "Загрузить ", "File handling" => "Работа Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸", "Maximum upload size" => "МакÑимальный размер загружаемого файла", "max. possible: " => "МакÑимально возможный", @@ -58,5 +59,6 @@ "Upload too large" => "Загрузка Ñлишком велика", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Размер файлов, которые Ð’Ñ‹ пытаетеÑÑŒ загрузить, превышает макÑимально допуÑтимый размер Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ на данный Ñервер.", "Files are being scanned, please wait." => "Файлы ÑканируютÑÑ, пожалуйÑта, подождите.", -"Current scanning" => "Текущее Ñканирование" +"Current scanning" => "Текущее Ñканирование", +"Upgrading filesystem cache..." => "Обновление кÑша файловой ÑиÑтемы... " ); diff --git a/apps/files/l10n/si_LK.php b/apps/files/l10n/si_LK.php index 8b276bdaa8f..316470d8396 100644 --- a/apps/files/l10n/si_LK.php +++ b/apps/files/l10n/si_LK.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "උඩුගචකිරීම", "No file was uploaded. Unknown error" => "ගොනුවක් උඩුගචනොවුනි. නොහà·à¶³à·’නු දà·à·‚යක්", "There is no error, the file uploaded with success" => "නිවà·à¶»à¶¯à·’ à·€ ගොනුව උඩුගචකෙරිනි", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "උඩුගචකළ ගොනුවේ විà·à·à¶½à¶à·Šà·€à¶º HTML à¶´à·à¶»à¶¸à¶ºà·š නියම à¶šà·… ඇà¶à·’ MAX_FILE_SIZE විà·à·à¶½à¶à·Šà·€à¶ºà¶§ වඩ෠වà·à¶©à·’ය", @@ -21,12 +20,12 @@ "Upload cancelled." => "උඩුගචකිරීම à¶…à¶à·Š හරින්න ලදී", "File upload is in progress. Leaving the page now will cancel the upload." => "උඩුගà¶à¶šà·’රීමක් සිදුවේ. පිටුව à·„à·à¶» යà·à¶¸à·™à¶±à·Š එය à¶±à·à·€à¶à·™à¶±à·” ඇà¶", "URL cannot be empty." => "යොමුව හිස් විය නොහà·à¶š", -"error while scanning" => "පරීක්ෂ෠කිරීමේදී දà·à·‚යක්", "Name" => "නම", "Size" => "à¶´à·Šâ€à¶»à¶¸à·à¶«à¶º", "Modified" => "වෙනස් à¶šà·…", "1 folder" => "1 ෆොල්ඩරයක්", "1 file" => "1 ගොනුවක්", +"Upload" => "උඩුගචකිරීම", "File handling" => "ගොනු පරිහරණය", "Maximum upload size" => "උඩුගචකිරීමක උපරිම à¶´à·Šâ€à¶»à¶¸à·à¶«à¶º", "max. possible: " => "à·„à·à¶šà·’ උපරිමය:", diff --git a/apps/files/l10n/sk_SK.php b/apps/files/l10n/sk_SK.php index b28e2648fef..a94d96f6aee 100644 --- a/apps/files/l10n/sk_SK.php +++ b/apps/files/l10n/sk_SK.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "OdoslaÅ¥", "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:", @@ -8,6 +7,8 @@ "No file was uploaded" => "Žiaden súbor nebol nahraný", "Missing a temporary folder" => "Chýbajúci doÄasný prieÄinok", "Failed to write to disk" => "Zápis na disk sa nepodaril", +"Not enough space available" => "Nie je k dispozÃcii dostatok miesta", +"Invalid directory." => "Neplatný adresár", "Files" => "Súbory", "Unshare" => "NezdielaÅ¥", "Delete" => "OdstrániÅ¥", @@ -19,9 +20,12 @@ "replaced {new_name}" => "prepÃsaný {new_name}", "undo" => "vrátiÅ¥", "replaced {new_name} with {old_name}" => "prepÃsaný {new_name} súborom {old_name}", -"unshared {files}" => "zdieľanie zruÅ¡ené pre {files}", -"deleted {files}" => "zmazané {files}", +"'.' is an invalid file name." => "'.' je neplatné meno súboru.", +"File name cannot be empty." => "Meno súboru nemôže byÅ¥ prázdne", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nesprávne meno, '\\', '/', '<', '>', ':', '\"', '|', '?' a '*' nie sú povolené hodnoty.", +"Your storage is full, files can not be updated or synced anymore!" => "VaÅ¡e úložisko je plné. Súbory nemožno aktualizovaÅ¥ ani synchronizovaÅ¥!", +"Your storage is almost full ({usedSpacePercent}%)" => "VaÅ¡e úložisko je takmer plné ({usedSpacePercent}%)", +"Your download is being prepared. This might take some time if the files are big." => "VaÅ¡e sÅ¥ahovanie sa pripravuje. Ak sú sÅ¥ahované súbory veľké, môže to chvÃľu trvaÅ¥.", "Unable to upload your file as it is a directory or has 0 bytes" => "Nemôžem nahraÅ¥ súbor lebo je to prieÄinok alebo má 0 bajtov.", "Upload Error" => "Chyba odosielania", "Close" => "ZavrieÅ¥", @@ -31,8 +35,7 @@ "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", -"{count} files scanned" => "{count} súborov prehľadaných", -"error while scanning" => "chyba poÄas kontroly", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Neplatné meno adresára. PoužÃvanie mena 'Shared' je vyhradené len pre Owncloud", "Name" => "Meno", "Size" => "VeľkosÅ¥", "Modified" => "Upravené", @@ -40,6 +43,7 @@ "{count} folders" => "{count} prieÄinkov", "1 file" => "1 súbor", "{count} files" => "{count} súborov", +"Upload" => "OdoslaÅ¥", "File handling" => "Nastavenie správanie k súborom", "Maximum upload size" => "Maximálna veľkosÅ¥ odosielaného súboru", "max. possible: " => "najväÄÅ¡ie možné:", diff --git a/apps/files/l10n/sl.php b/apps/files/l10n/sl.php index 34544e3401c..d55b4207d2b 100644 --- a/apps/files/l10n/sl.php +++ b/apps/files/l10n/sl.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "PoÅ¡lji", "No file was uploaded. Unknown error" => "Nobena datoteka ni naložena. Neznana napaka.", "There is no error, the file uploaded with success" => "Datoteka je uspeÅ¡no naložena brez napak.", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Naložena datoteka presega dovoljeno velikost. Le-ta je doloÄena z vrstico upload_max_filesize v datoteki php.ini:", @@ -19,8 +18,6 @@ "replaced {new_name}" => "zamenjano je ime {new_name}", "undo" => "razveljavi", "replaced {new_name} with {old_name}" => "zamenjano ime {new_name} z imenom {old_name}", -"unshared {files}" => "odstranjeno iz souporabe {files}", -"deleted {files}" => "izbrisano {files}", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Neveljavno ime, znaki '\\', '/', '<', '>', ':', '\"', '|', '?' in '*' niso dovoljeni.", "Unable to upload your file as it is a directory or has 0 bytes" => "PoÅ¡iljanje ni mogoÄe, saj gre za mapo, ali pa je datoteka velikosti 0 bajtov.", "Upload Error" => "Napaka med nalaganjem", @@ -31,8 +28,6 @@ "Upload cancelled." => "PoÅ¡iljanje je preklicano.", "File upload is in progress. Leaving the page now will cancel the upload." => "V teku je poÅ¡iljanje datoteke. ÄŒe zapustite to stran zdaj, bo poÅ¡iljanje preklicano.", "URL cannot be empty." => "Naslov URL ne sme biti prazen.", -"{count} files scanned" => "{count} files scanned", -"error while scanning" => "napaka med pregledovanjem datotek", "Name" => "Ime", "Size" => "Velikost", "Modified" => "Spremenjeno", @@ -40,6 +35,7 @@ "{count} folders" => "{count} map", "1 file" => "1 datoteka", "{count} files" => "{count} datotek", +"Upload" => "PoÅ¡lji", "File handling" => "Upravljanje z datotekami", "Maximum upload size" => "NajveÄja velikost za poÅ¡iljanja", "max. possible: " => "najveÄ mogoÄe:", diff --git a/apps/files/l10n/sr.php b/apps/files/l10n/sr.php index 3da6e27373f..188c8fc0da6 100644 --- a/apps/files/l10n/sr.php +++ b/apps/files/l10n/sr.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Отпреми", "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:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Отпремљена датотека прелази Ñмерницу MAX_FILE_SIZE која је наведена у HTML обраÑцу", @@ -18,8 +17,6 @@ "replaced {new_name}" => "замењено {new_name}", "undo" => "опозови", "replaced {new_name} with {old_name}" => "замењено {new_name} Ñа {old_name}", -"unshared {files}" => "укинуто дељење {files}", -"deleted {files}" => "обриÑано {files}", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "ÐеиÑправан назив. Следећи знакови ниÑу дозвољени: \\, /, <, >, :, \", |, ? и *.", "Unable to upload your file as it is a directory or has 0 bytes" => "Ðе могу да отпремим датотеку као фаÑциклу или она има 0 бајтова", "Upload Error" => "Грешка при отпремању", @@ -29,8 +26,6 @@ "{count} files uploading" => "Отпремам {count} датотеке/а", "Upload cancelled." => "Отпремање је прекинуто.", "File upload is in progress. Leaving the page now will cancel the upload." => "Отпремање датотеке је у току. Ðко Ñада напуÑтите Ñтраницу, прекинућете отпремање.", -"{count} files scanned" => "Скенирано датотека: {count}", -"error while scanning" => "грешка при Ñкенирању", "Name" => "Ðазив", "Size" => "Величина", "Modified" => "Измењено", @@ -38,6 +33,7 @@ "{count} folders" => "{count} фаÑцикле/и", "1 file" => "1 датотека", "{count} files" => "{count} датотеке/а", +"Upload" => "Отпреми", "File handling" => "Управљање датотекама", "Maximum upload size" => "Ðајвећа величина датотеке", "max. possible: " => "највећа величина:", diff --git a/apps/files/l10n/sr@latin.php b/apps/files/l10n/sr@latin.php index 117d437f0bb..0fda24532dc 100644 --- a/apps/files/l10n/sr@latin.php +++ b/apps/files/l10n/sr@latin.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "PoÅ¡alji", "There is no error, the file uploaded with success" => "Nema greÅ¡ke, fajl je uspeÅ¡no poslat", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Poslati fajl prevazilazi direktivu MAX_FILE_SIZE koja je navedena u HTML formi", "The uploaded file was only partially uploaded" => "Poslati fajl je samo delimiÄno otpremljen!", @@ -11,6 +10,7 @@ "Name" => "Ime", "Size" => "VeliÄina", "Modified" => "Zadnja izmena", +"Upload" => "PoÅ¡alji", "Maximum upload size" => "Maksimalna veliÄina poÅ¡iljke", "Save" => "Snimi", "Nothing in here. Upload something!" => "Ovde nema niÄeg. PoÅ¡aljite neÅ¡to!", diff --git a/apps/files/l10n/sv.php b/apps/files/l10n/sv.php index 7597f6908eb..4b4785931f2 100644 --- a/apps/files/l10n/sv.php +++ b/apps/files/l10n/sv.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Ladda upp", -"Could not move %s - File with this name already exists" => "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:", @@ -24,11 +20,11 @@ "replaced {new_name}" => "ersatt {new_name}", "undo" => "Ã¥ngra", "replaced {new_name} with {old_name}" => "ersatt {new_name} med {old_name}", -"unshared {files}" => "stoppad delning {files}", -"deleted {files}" => "raderade {files}", "'.' is an invalid file name." => "'.' är ett ogiltigt filnamn.", "File name cannot be empty." => "Filnamn kan inte vara tomt.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ogiltigt namn, '\\', '/', '<', '>', ':', '\"', '|', '?' och '*' är inte tillÃ¥tet.", +"Your storage is full, files can not be updated or synced anymore!" => "Ditt lagringsutrymme är fullt, filer kan ej längre laddas upp eller synkas!", +"Your storage is almost full ({usedSpacePercent}%)" => "Ditt lagringsutrymme är nästan fullt ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "Din nedladdning förbereds. Det kan ta tid om det är stora filer.", "Unable to upload your file as it is a directory or has 0 bytes" => "Kunde inte ladda upp dina filer eftersom det antingen är en mapp eller har 0 bytes.", "Upload Error" => "Uppladdningsfel", @@ -40,8 +36,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "Filuppladdning pÃ¥gÃ¥r. Lämnar du sidan sÃ¥ avbryts uppladdningen.", "URL cannot be empty." => "URL kan inte vara tom.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ogiltigt mappnamn. Användande av 'Shared' är reserverat av ownCloud", -"{count} files scanned" => "{count} filer skannade", -"error while scanning" => "fel vid skanning", "Name" => "Namn", "Size" => "Storlek", "Modified" => "Ändrad", @@ -49,6 +43,7 @@ "{count} folders" => "{count} mappar", "1 file" => "1 fil", "{count} files" => "{count} filer", +"Upload" => "Ladda upp", "File handling" => "Filhantering", "Maximum upload size" => "Maximal storlek att ladda upp", "max. possible: " => "max. möjligt:", @@ -67,5 +62,6 @@ "Upload too large" => "För stor uppladdning", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filerna du försöker ladda upp överstiger den maximala storleken för filöverföringar pÃ¥ servern.", "Files are being scanned, please wait." => "Filer skannas, var god vänta", -"Current scanning" => "Aktuell skanning" +"Current scanning" => "Aktuell skanning", +"Upgrading filesystem cache..." => "Uppgraderar filsystemets cache..." ); diff --git a/apps/files/l10n/ta_LK.php b/apps/files/l10n/ta_LK.php index d7a9313d974..383b4ef6f85 100644 --- a/apps/files/l10n/ta_LK.php +++ b/apps/files/l10n/ta_LK.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "பதிவேறà¯à®±à¯à®•", "No file was uploaded. Unknown error" => "ஒர௠கோபà¯à®ªà¯à®®à¯ பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ. அறியபà¯à®ªà®Ÿà®¾à®¤ வழà¯", "There is no error, the file uploaded with success" => "இஙà¯à®•௠வழ௠இலà¯à®²à¯ˆ, கோபà¯à®ªà¯ வெறà¯à®±à®¿à®•ரமாக பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà®¾à®©à®¤à¯ HTML படிவதà¯à®¤à®¿à®²à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³ MAX_FILE_SIZE directive ஠விட கூடியதà¯", @@ -18,8 +17,6 @@ "replaced {new_name}" => "மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ {new_name}", "undo" => "à®®à¯à®©à¯ செயல௠நீகà¯à®•ம௠", "replaced {new_name} with {old_name}" => "{new_name} ஆனத௠{old_name} இனால௠மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯", -"unshared {files}" => "பகிரபà¯à®ªà®Ÿà®¾à®¤à®¤à¯ {கோபà¯à®ªà¯à®•ளà¯}", -"deleted {files}" => "நீகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ {கோபà¯à®ªà¯à®•ளà¯}", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®±à¯à®± பெயரà¯,'\\', '/', '<', '>', ':', '\"', '|', '?' மறà¯à®±à¯à®®à¯ '*' ஆகியன அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà®®à®¾à®Ÿà¯à®Ÿà®¾à®¤à¯.", "Unable to upload your file as it is a directory or has 0 bytes" => "அடைவ௠அலà¯à®²à®¤à¯ 0 bytes ஠கொணà¯à®Ÿà¯à®³à¯à®³à®¤à®¾à®²à¯ உஙà¯à®•ளà¯à®Ÿà¯ˆà®¯ கோபà¯à®ªà¯ˆ பதிவேறà¯à®± à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ", "Upload Error" => "பதிவேறà¯à®±à®²à¯ வழà¯", @@ -30,8 +27,6 @@ "Upload cancelled." => "பதிவேறà¯à®±à®²à¯ இரதà¯à®¤à¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯", "File upload is in progress. Leaving the page now will cancel the upload." => "கோபà¯à®ªà¯ பதிவேறà¯à®±à®®à¯ செயலà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯ உளà¯à®³à®¤à¯. இநà¯à®¤à®ªà¯ பகà¯à®•தà¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ வெறியேறà¯à®µà®¤à®¾à®©à®¤à¯ பதிவேறà¯à®±à®²à¯ˆ இரதà¯à®¤à¯ செயà¯à®¯à¯à®®à¯.", "URL cannot be empty." => "URL வெறà¯à®®à¯ˆà®¯à®¾à®• இரà¯à®•à¯à®•à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯.", -"{count} files scanned" => "{எணà¯à®£à®¿à®•à¯à®•ை} கோபà¯à®ªà¯à®•ள௠வரà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯", -"error while scanning" => "வரà¯à®Ÿà¯à®®à¯ போதான வழà¯", "Name" => "பெயரà¯", "Size" => "அளவà¯", "Modified" => "மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯", @@ -39,6 +34,7 @@ "{count} folders" => "{எணà¯à®£à®¿à®•à¯à®•ை} கோபà¯à®ªà¯à®±à¯ˆà®•ளà¯", "1 file" => "1 கோபà¯à®ªà¯", "{count} files" => "{எணà¯à®£à®¿à®•à¯à®•ை} கோபà¯à®ªà¯à®•ளà¯", +"Upload" => "பதிவேறà¯à®±à¯à®•", "File handling" => "கோபà¯à®ªà¯ கையாளà¯à®¤à®²à¯", "Maximum upload size" => "பதிவேறà¯à®±à®•à¯à®•ூடிய ஆககà¯à®•ூடிய அளவ௠", "max. possible: " => "ஆகக௠கூடியதà¯:", diff --git a/apps/files/l10n/th_TH.php b/apps/files/l10n/th_TH.php index 43a905ea3bc..c141e4f7166 100644 --- a/apps/files/l10n/th_TH.php +++ b/apps/files/l10n/th_TH.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "à¸à¸±à¸žà¹‚หลด", -"Could not move %s - File with this name already exists" => "ไม่สามารถย้าย %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", @@ -24,11 +20,11 @@ "replaced {new_name}" => "à¹à¸—นที่ {new_name} à¹à¸¥à¹‰à¸§", "undo" => "เลิà¸à¸—ำ", "replaced {new_name} with {old_name}" => "à¹à¸—นที่ {new_name} ด้วย {old_name} à¹à¸¥à¹‰à¸§", -"unshared {files}" => "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹à¸Šà¸£à¹Œà¹à¸¥à¹‰à¸§ {files} ไฟล์", -"deleted {files}" => "ลบไฟล์à¹à¸¥à¹‰à¸§ {files} ไฟล์", "'.' is an invalid file name." => "'.' เป็นชื่à¸à¹„ฟล์ที่ไม่ถูà¸à¸•้à¸à¸‡", "File name cannot be empty." => "ชื่à¸à¹„ฟล์ไม่สามารถเว้นว่างได้", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "ชื่à¸à¸—ี่ใช้ไม่ถูà¸à¸•้à¸à¸‡, '\\', '/', '<', '>', ':', '\"', '|', '?' à¹à¸¥à¸° '*' ไม่ได้รับà¸à¸™à¸¸à¸à¸²à¸•ให้ใช้งานได้", +"Your storage is full, files can not be updated or synced anymore!" => "พื้นที่จัดเà¸à¹‡à¸šà¸‚้à¸à¸¡à¸¹à¸¥à¸‚à¸à¸‡à¸„ุณเต็มà¹à¸¥à¹‰à¸§ ไม่สามารถà¸à¸±à¸žà¹€à¸”ทหรืà¸à¸œà¸ªà¸²à¸™à¹„ฟล์ต่างๆได้à¸à¸µà¸à¸•่à¸à¹„ป", +"Your storage is almost full ({usedSpacePercent}%)" => "พื้นที่จัดเà¸à¹‡à¸šà¸‚้à¸à¸¡à¸¹à¸¥à¸‚à¸à¸‡à¸„ุณใà¸à¸¥à¹‰à¹€à¸•็มà¹à¸¥à¹‰à¸§ ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "à¸à¸³à¸¥à¸±à¸‡à¹€à¸•รียมดาวน์โหลดข้à¸à¸¡à¸¹à¸¥ หาà¸à¹„ฟล์มีขนาดใหà¸à¹ˆ à¸à¸²à¸ˆà¹ƒà¸Šà¹‰à¹€à¸§à¸¥à¸²à¸ªà¸±à¸à¸„รู่", "Unable to upload your file as it is a directory or has 0 bytes" => "ไม่สามารถà¸à¸±à¸žà¹‚หลดไฟล์ขà¸à¸‡à¸„ุณได้ เนื่à¸à¸‡à¸ˆà¸²à¸à¹„ฟล์ดังà¸à¸¥à¹ˆà¸²à¸§à¹€à¸›à¹‡à¸™à¹„ดเร็à¸à¸—à¸à¸£à¸µà¹ˆà¸«à¸£à¸·à¸à¸¡à¸µà¸‚นาด 0 ไบต์", "Upload Error" => "เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดในà¸à¸²à¸£à¸à¸±à¸žà¹‚หลด", @@ -40,8 +36,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "à¸à¸²à¸£à¸à¸±à¸žà¹‚หลดไฟล์à¸à¸³à¸¥à¸±à¸‡à¸à¸¢à¸¹à¹ˆà¹ƒà¸™à¸£à¸°à¸«à¸§à¹ˆà¸²à¸‡à¸”ำเนินà¸à¸²à¸£ à¸à¸²à¸£à¸à¸à¸à¸ˆà¸²à¸à¸«à¸™à¹‰à¸²à¹€à¸§à¹‡à¸šà¸™à¸µà¹‰à¸ˆà¸°à¸—ำให้à¸à¸²à¸£à¸à¸±à¸žà¹‚หลดถูà¸à¸¢à¸à¹€à¸¥à¸´à¸", "URL cannot be empty." => "URL ไม่สามารถเว้นว่างได้", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "ชื่à¸à¹‚ฟลเดà¸à¸£à¹Œà¹„ม่ถูà¸à¸•้à¸à¸‡ à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™ 'à¹à¸Šà¸£à¹Œ' สงวนไว้สำหรับ Owncloud เท่านั้น", -"{count} files scanned" => "สà¹à¸à¸™à¹„ฟล์à¹à¸¥à¹‰à¸§ {count} ไฟล์", -"error while scanning" => "พบข้à¸à¸œà¸´à¸”พลาดในระหว่างà¸à¸²à¸£à¸ªà¹à¸à¸™à¹„ฟล์", "Name" => "ชื่à¸", "Size" => "ขนาด", "Modified" => "ปรับปรุงล่าสุด", @@ -49,6 +43,7 @@ "{count} folders" => "{count} โฟลเดà¸à¸£à¹Œ", "1 file" => "1 ไฟล์", "{count} files" => "{count} ไฟล์", +"Upload" => "à¸à¸±à¸žà¹‚หลด", "File handling" => "à¸à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¹„ฟล์", "Maximum upload size" => "ขนาดไฟล์สูงสุดที่à¸à¸±à¸žà¹‚หลดได้", "max. possible: " => "จำนวนสูงสุดที่สามารถทำได้: ", diff --git a/apps/files/l10n/tr.php b/apps/files/l10n/tr.php index 6b390570f30..3412d8ad448 100644 --- a/apps/files/l10n/tr.php +++ b/apps/files/l10n/tr.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Yükle", -"Could not move %s - File with this name already exists" => "%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ı.", @@ -24,8 +20,6 @@ "replaced {new_name}" => "deÄŸiÅŸtirilen {new_name}", "undo" => "geri al", "replaced {new_name} with {old_name}" => "{new_name} ismi {old_name} ile deÄŸiÅŸtirildi", -"unshared {files}" => "paylaşılmamış {files}", -"deleted {files}" => "silinen {files}", "'.' is an invalid file name." => "'.' geçersiz dosya adı.", "File name cannot be empty." => "Dosya adı boÅŸ olamaz.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Geçersiz isim, '\\', '/', '<', '>', ':', '\"', '|', '?' ve '*' karakterlerine izin verilmemektedir.", @@ -40,8 +34,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "Dosya yükleme iÅŸlemi sürüyor. Åžimdi sayfadan ayrılırsanız iÅŸleminiz iptal olur.", "URL cannot be empty." => "URL boÅŸ olamaz.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Geçersiz dizin adı. Shared isminin kullanımı Owncloud tarafından rezerver edilmiÅŸtir.", -"{count} files scanned" => "{count} dosya tarandı", -"error while scanning" => "tararamada hata oluÅŸdu", "Name" => "Ad", "Size" => "Boyut", "Modified" => "DeÄŸiÅŸtirilme", @@ -49,6 +41,7 @@ "{count} folders" => "{count} dizin", "1 file" => "1 dosya", "{count} files" => "{count} dosya", +"Upload" => "Yükle", "File handling" => "Dosya taşıma", "Maximum upload size" => "Maksimum yükleme boyutu", "max. possible: " => "mümkün olan en fazla: ", diff --git a/apps/files/l10n/uk.php b/apps/files/l10n/uk.php index f1279bc77c8..9831dfe0f8f 100644 --- a/apps/files/l10n/uk.php +++ b/apps/files/l10n/uk.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Відвантажити", "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: ", @@ -19,8 +18,6 @@ "replaced {new_name}" => "замінено {new_name}", "undo" => "відмінити", "replaced {new_name} with {old_name}" => "замінено {new_name} на {old_name}", -"unshared {files}" => "неопубліковано {files}", -"deleted {files}" => "видалено {files}", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ðевірне ім'Ñ, '\\', '/', '<', '>', ':', '\"', '|', '?' та '*' не дозволені.", "Unable to upload your file as it is a directory or has 0 bytes" => "Ðеможливо завантажити ваш файл тому, що він тека або файл розміром 0 байт", "Upload Error" => "Помилка завантаженнÑ", @@ -31,8 +28,6 @@ "Upload cancelled." => "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾.", "File upload is in progress. Leaving the page now will cancel the upload." => "ВиконуєтьÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ. Ð—Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñ†Ñ–Ñ”Ñ— Ñторінки приведе до відміни завантаженнÑ.", "URL cannot be empty." => "URL не може бути пуÑтим.", -"{count} files scanned" => "{count} файлів проÑкановано", -"error while scanning" => "помилка при Ñкануванні", "Name" => "Ім'Ñ", "Size" => "Розмір", "Modified" => "Змінено", @@ -40,6 +35,7 @@ "{count} folders" => "{count} папок", "1 file" => "1 файл", "{count} files" => "{count} файлів", +"Upload" => "Відвантажити", "File handling" => "Робота з файлами", "Maximum upload size" => "МакÑимальний розмір відвантажень", "max. possible: " => "макÑ.можливе:", diff --git a/apps/files/l10n/vi.php b/apps/files/l10n/vi.php index dcaf8900014..0daf580a2f5 100644 --- a/apps/files/l10n/vi.php +++ b/apps/files/l10n/vi.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "Tải lên", "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 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", @@ -18,8 +17,6 @@ "replaced {new_name}" => "đã thay thế {new_name}", "undo" => "lùi lại", "replaced {new_name} with {old_name}" => "đã thay thế {new_name} bằng {old_name}", -"unshared {files}" => "há»§y chia sẽ {files}", -"deleted {files}" => "đã xóa {files}", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Tên không hợp lệ, '\\', '/', '<', '>', ':', '\"', '|', '?' và '*' thì không được phép dùng.", "Unable to upload your file as it is a directory or has 0 bytes" => "Không thể tải lên táºp tin nà y do nó là má»™t thư mục hoặc kÃch thước táºp tin bằng 0 byte", "Upload Error" => "Tải lên lá»—i", @@ -30,8 +27,6 @@ "Upload cancelled." => "Há»§y tải lên", "File upload is in progress. Leaving the page now will cancel the upload." => "Táºp tin tải lên Ä‘ang được xá» lý. Nếu bạn rá»i khá»i trang bây giá» sẽ há»§y quá trình nà y.", "URL cannot be empty." => "URL không được để trống.", -"{count} files scanned" => "{count} táºp tin đã được quét", -"error while scanning" => "lá»—i trong khi quét", "Name" => "Tên", "Size" => "KÃch cỡ", "Modified" => "Thay đổi", @@ -39,6 +34,7 @@ "{count} folders" => "{count} thư mục", "1 file" => "1 táºp tin", "{count} files" => "{count} táºp tin", +"Upload" => "Tải lên", "File handling" => "Xá» lý táºp tin", "Maximum upload size" => "KÃch thước tối Ä‘a ", "max. possible: " => "tối Ä‘a cho phép:", diff --git a/apps/files/l10n/zh_CN.GB2312.php b/apps/files/l10n/zh_CN.GB2312.php index 4416ce9a4a2..a38e2d3bc60 100644 --- a/apps/files/l10n/zh_CN.GB2312.php +++ b/apps/files/l10n/zh_CN.GB2312.php @@ -1,5 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "ä¸Šä¼ ", "No file was uploaded. Unknown error" => "æ²¡æœ‰ä¸Šä¼ æ–‡ä»¶ã€‚æœªçŸ¥é”™è¯¯", "There is no error, the file uploaded with success" => "没有任何错误,æ–‡ä»¶ä¸Šä¼ æˆåŠŸäº†", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "ä¸Šä¼ çš„æ–‡ä»¶è¶…è¿‡äº†HTMLè¡¨å•æŒ‡å®šçš„MAX_FILE_SIZE", @@ -18,8 +17,6 @@ "replaced {new_name}" => "å·²æ›¿æ¢ {new_name}", "undo" => "撤销", "replaced {new_name} with {old_name}" => "已用 {old_name} æ›¿æ¢ {new_name}", -"unshared {files}" => "未分享的 {files}", -"deleted {files}" => "å·²åˆ é™¤çš„ {files}", "Unable to upload your file as it is a directory or has 0 bytes" => "ä¸èƒ½ä¸Šä¼ ä½ æŒ‡å®šçš„æ–‡ä»¶,å¯èƒ½å› 为它是个文件夹或者大å°ä¸º0", "Upload Error" => "ä¸Šä¼ é”™è¯¯", "Close" => "å…³é—", @@ -29,8 +26,6 @@ "Upload cancelled." => "ä¸Šä¼ å–æ¶ˆäº†", "File upload is in progress. Leaving the page now will cancel the upload." => "文件æ£åœ¨ä¸Šä¼ 。关é—页é¢ä¼šå–æ¶ˆä¸Šä¼ ã€‚", "URL cannot be empty." => "网å€ä¸èƒ½ä¸ºç©ºã€‚", -"{count} files scanned" => "{count} 个文件已扫æ", -"error while scanning" => "扫æå‡ºé”™", "Name" => "åå—", "Size" => "大å°", "Modified" => "修改日期", @@ -38,6 +33,7 @@ "{count} folders" => "{count} 个文件夹", "1 file" => "1 个文件", "{count} files" => "{count} 个文件", +"Upload" => "ä¸Šä¼ ", "File handling" => "文件处ç†ä¸", "Maximum upload size" => "æœ€å¤§ä¸Šä¼ å¤§å°", "max. possible: " => "最大å¯èƒ½", diff --git a/apps/files/l10n/zh_CN.php b/apps/files/l10n/zh_CN.php index f8dedc118e0..2491d645340 100644 --- a/apps/files/l10n/zh_CN.php +++ b/apps/files/l10n/zh_CN.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "ä¸Šä¼ ", -"Could not move %s - File with this name already exists" => "æ— æ³•ç§»åŠ¨ %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所规定的值", @@ -24,8 +20,6 @@ "replaced {new_name}" => "æ›¿æ¢ {new_name}", "undo" => "撤销", "replaced {new_name} with {old_name}" => "已将 {old_name}æ›¿æ¢æˆ {new_name}", -"unshared {files}" => "å–æ¶ˆäº†å…±äº« {files}", -"deleted {files}" => "åˆ é™¤äº† {files}", "'.' is an invalid file name." => "'.' æ˜¯ä¸€ä¸ªæ— æ•ˆçš„æ–‡ä»¶å。", "File name cannot be empty." => "文件åä¸èƒ½ä¸ºç©ºã€‚", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "æ— æ•ˆå称,'\\', '/', '<', '>', ':', '\"', '|', '?' å’Œ '*' ä¸è¢«å…许使用。", @@ -40,8 +34,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "文件æ£åœ¨ä¸Šä¼ ä¸ã€‚现在离开æ¤é¡µä¼šå¯¼è‡´ä¸Šä¼ åŠ¨ä½œè¢«å–æ¶ˆã€‚", "URL cannot be empty." => "URLä¸èƒ½ä¸ºç©º", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "æ— æ•ˆæ–‡ä»¶å¤¹å。'共享' 是 Owncloud 预留的文件夹å。", -"{count} files scanned" => "{count} 个文件已扫æã€‚", -"error while scanning" => "æ‰«ææ—¶å‡ºé”™", "Name" => "åç§°", "Size" => "大å°", "Modified" => "修改日期", @@ -49,6 +41,7 @@ "{count} folders" => "{count} 个文件夹", "1 file" => "1 个文件", "{count} files" => "{count} 个文件", +"Upload" => "ä¸Šä¼ ", "File handling" => "文件处ç†", "Maximum upload size" => "æœ€å¤§ä¸Šä¼ å¤§å°", "max. possible: " => "最大å…许: ", diff --git a/apps/files/l10n/zh_TW.php b/apps/files/l10n/zh_TW.php index 61f8c288288..6d354ac1e95 100644 --- a/apps/files/l10n/zh_TW.php +++ b/apps/files/l10n/zh_TW.php @@ -1,8 +1,4 @@ <?php $TRANSLATIONS = array( -"Upload" => "上傳", -"Could not move %s - File with this name already exists" => "無法移動 %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 åƒæ•¸çš„è¨å®šï¼š", @@ -24,11 +20,10 @@ "replaced {new_name}" => "å·²å–代 {new_name}", "undo" => "復原", "replaced {new_name} with {old_name}" => "使用 {new_name} å–代 {old_name}", -"unshared {files}" => "已喿¶ˆåˆ†äº« {files}", -"deleted {files}" => "已刪除 {files}", "'.' is an invalid file name." => "'.' 是ä¸åˆæ³•的檔å。", "File name cannot be empty." => "檔åä¸èƒ½ç‚ºç©ºã€‚", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "檔åä¸åˆæ³•,ä¸å…許 '\\', '/', '<', '>', ':', '\"', '|', '?' å’Œ '*' 。", +"Your 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" => "關閉", @@ -39,8 +34,6 @@ "File upload is in progress. Leaving the page now will cancel the upload." => "檔案上傳ä¸ã€‚離開æ¤é é¢å°‡æœƒå–消上傳。", "URL cannot be empty." => "URL ä¸èƒ½ç‚ºç©ºç™½.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "無效的資料夾å稱,'Shared' 的使用被 Owncloud ä¿ç•™", -"{count} files scanned" => "{count} 個檔案已掃æ", -"error while scanning" => "æŽƒææ™‚發生錯誤", "Name" => "å稱", "Size" => "大å°", "Modified" => "修改", @@ -48,6 +41,7 @@ "{count} folders" => "{count} 個資料夾", "1 file" => "1 個檔案", "{count} files" => "{count} 個檔案", +"Upload" => "上傳", "File handling" => "檔案處ç†", "Maximum upload size" => "最大上傳檔案大å°", "max. possible: " => "最大å…許:", diff --git a/apps/files/lib/helper.php b/apps/files/lib/helper.php new file mode 100644 index 00000000000..f2b1f142e9b --- /dev/null +++ b/apps/files/lib/helper.php @@ -0,0 +1,20 @@ +<?php + +namespace OCA\files\lib; + +class Helper +{ + public static function buildFileStorageStatistics($dir) { + $l = new \OC_L10N('files'); + $maxUploadFilesize = \OCP\Util::maxUploadFilesize($dir); + $maxHumanFilesize = \OCP\Util::humanFileSize($maxUploadFilesize); + $maxHumanFilesize = $l->t('Upload') . ' max. ' . $maxHumanFilesize; + + // information about storage capacities + $storageInfo = \OC_Helper::getStorageInfo(); + + return array('uploadMaxFilesize' => $maxUploadFilesize, + 'maxHumanFilesize' => $maxHumanFilesize, + 'usedSpacePercent' => (int)$storageInfo['relative']); + } +} diff --git a/apps/files/settings.php b/apps/files/settings.php index 52ec9fd0fe3..8687f013137 100644 --- a/apps/files/settings.php +++ b/apps/files/settings.php @@ -21,10 +21,6 @@ * */ - -// Init owncloud - - // Check if we are a user OCP\User::checkLoggedIn(); @@ -36,7 +32,7 @@ OCP\Util::addscript( "files", "files" ); $dir = isset( $_GET['dir'] ) ? $_GET['dir'] : ''; $files = array(); -foreach( OC_Files::getdirectorycontent( $dir ) as $i ) { +foreach( \OC\Files\Filesystem::getDirectoryContent( $dir ) as $i ) { $i["date"] = date( $CONFIG_DATEFORMAT, $i["mtime"] ); $files[] = $i; } diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php index 2e0772443f2..2d4ed9ab2d9 100644 --- a/apps/files/templates/index.php +++ b/apps/files/templates/index.php @@ -35,6 +35,11 @@ <a href="#" class="svg" onclick="return false;"></a> </form> </div> + <?php if ($_['trash'] ): ?> + <div id="trash" class="button"> + <a><?php echo $l->t('Trash');?></a> + </div> + <?php endif; ?> <div id="uploadprogresswrapper"> <div id="uploadprogressbar"></div> <input type="button" class="stop" style="display:none" @@ -42,7 +47,6 @@ onclick="javascript:Files.cancelUploads();" /> </div> - </div> <div id="file_action_panel"></div> <?php else:?> @@ -50,7 +54,6 @@ <?php endif;?> <input type="hidden" name="permissions" value="<?php echo $_['permissions']; ?>" id="permissions"> </div> -<div id='notification'></div> <?php if (isset($_['files']) and $_['isCreatable'] and count($_['files'])==0):?> <div id="emptyfolder"><?php echo $l->t('Nothing in here. Upload something!')?></div> @@ -115,3 +118,4 @@ <!-- config hints for javascript --> <input type="hidden" name="allowZipDownload" id="allowZipDownload" value="<?php echo $_['allowZipDownload']; ?>" /> +<input type="hidden" name="usedSpacePercent" id="usedSpacePercent" value="<?php echo $_['usedSpacePercent']; ?>" /> diff --git a/apps/files/templates/part.list.php b/apps/files/templates/part.list.php index dfac43d1b12..5c39dda85ff 100644 --- a/apps/files/templates/part.list.php +++ b/apps/files/templates/part.list.php @@ -1,10 +1,4 @@ -<script type="text/javascript"> -<?php if ( array_key_exists('publicListView', $_) && $_['publicListView'] == true ) :?> - var publicListView = true; -<?php else: ?> - var publicListView = false; -<?php endif; ?> -</script> +<input type="hidden" id="disableSharing" data-status="<?php echo $_['disableSharing']; ?>"> <?php foreach($_['files'] as $file): $simple_file_size = OCP\simple_file_size($file['size']); @@ -19,7 +13,7 @@ $name = str_replace('%2F', '/', $name); $directory = str_replace('+', '%20', urlencode($file['directory'])); $directory = str_replace('%2F', '/', $directory); ?> - <tr data-id="<?php echo $file['id']; ?>" + <tr data-id="<?php echo $file['fileid']; ?>" data-file="<?php echo $name;?>" data-type="<?php echo ($file['type'] == 'dir')?'dir':'file'?>" data-mime="<?php echo $file['mimetype']?>" @@ -34,7 +28,7 @@ > <?php if(!isset($_['readonly']) || !$_['readonly']): ?><input type="checkbox" /><?php endif; ?> <?php if($file['type'] == 'dir'): ?> - <a class="name" href="<?php $_['baseURL'].$directory.'/'.$name; ?>)" title=""> + <a class="name" href="<?php echo $_['baseURL'].$directory.'/'.$name; ?>)" title=""> <?php else: ?> <a class="name" href="<?php echo $_['downloadURL'].$directory.'/'.$name; ?>" title=""> <?php endif; ?> @@ -67,4 +61,4 @@ </span> </td> </tr> -<?php endforeach;
\ No newline at end of file +<?php endforeach; diff --git a/apps/files/templates/upgrade.php b/apps/files/templates/upgrade.php new file mode 100644 index 00000000000..de6cc713028 --- /dev/null +++ b/apps/files/templates/upgrade.php @@ -0,0 +1,4 @@ +<div id="upgrade"> + <?php echo $l->t('Upgrading filesystem cache...');?> + <div id="progressbar" /> +</div> diff --git a/apps/files_encryption/l10n/ca.php b/apps/files_encryption/l10n/ca.php index d97a8666df4..56c81e747f7 100644 --- a/apps/files_encryption/l10n/ca.php +++ b/apps/files_encryption/l10n/ca.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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", +"Choose encryption mode:" => "Escolliu el mode d'encriptació:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Encriptació per part del client (més segura però fa impossible l'accés a les dades des de la interfÃcie web)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Encriptació per part del servidor (permet accedir als fitxers des de la interfÃcie web i des del client d'escriptori)", +"None (no encryption at all)" => "Cap (sense encriptació)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Important: quan seleccioneu un mode d'encriptació no hi ha manera de canviar-lo de nou", +"User specific (let the user decide)" => "EspecÃfic per usuari (permet que l'usuari ho decideixi)", "Encryption" => "Encriptatge", "Exclude the following file types from encryption" => "Exclou els tipus de fitxers següents de l'encriptatge", "None" => "Cap" diff --git a/apps/files_encryption/l10n/cs_CZ.php b/apps/files_encryption/l10n/cs_CZ.php index 90b1243f1fc..5948a9b82e8 100644 --- a/apps/files_encryption/l10n/cs_CZ.php +++ b/apps/files_encryption/l10n/cs_CZ.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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Ã.", +"Choose encryption mode:" => "Vyberte režim Å¡ifrovánÃ:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Å ifrovánà na stranÄ› klienta (nejbezpeÄnÄ›jšà ale neumožňuje vám pÅ™istupovat k souborům z webového rozhranÃ)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Å ifrovánà na stranÄ› serveru (umožňuje vám pÅ™istupovat k souborům pomocà webového rozhranà i aplikacÃ)", +"None (no encryption at all)" => "Žádný (vůbec žádné Å¡ifrovánÃ)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Důležité: jak si jednou vyberete režim Å¡ifrovánà nelze jej opÄ›tovnÄ› zmÄ›nit", +"User specific (let the user decide)" => "Definován uživatelem (umožnà uživateli si vybrat)", "Encryption" => "Å ifrovánÃ", "Exclude the following file types from encryption" => "PÅ™i Å¡ifrovánà vynechat následujÃcà typy souborů", "None" => "Žádné" diff --git a/apps/files_encryption/l10n/da.php b/apps/files_encryption/l10n/da.php index 1b4664ce1cb..d65963f46b2 100644 --- a/apps/files_encryption/l10n/da.php +++ b/apps/files_encryption/l10n/da.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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", +"Choose encryption mode:" => "Vælg krypteringsform:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Kryptering pÃ¥ klientsiden (mere sikker, men udelukker adgang til dataene fra webinterfacet)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Kryptering pÃ¥ serversiden (gør det muligt at tilgÃ¥ filer fra webinterfacet sÃ¥vel som desktopklienten)", +"None (no encryption at all)" => "Ingen (ingen kryptering)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Vigtigt: NÃ¥r der er valgt krypteringsform, kan det ikke ændres tilbage igen.", +"User specific (let the user decide)" => "Brugerspecifik (lad brugeren bestemme)", "Encryption" => "Kryptering", "Exclude the following file types from encryption" => "Ekskluder følgende filtyper fra kryptering", "None" => "Ingen" diff --git a/apps/files_encryption/l10n/de.php b/apps/files_encryption/l10n/de.php index 34c596dc4bb..e187f72ab50 100644 --- a/apps/files_encryption/l10n/de.php +++ b/apps/files_encryption/l10n/de.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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.", +"Choose encryption mode:" => "Wählen Sie die Verschlüsselungsart:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Clientseitige Verschlüsselung (am sichersten, aber macht es unmöglich auf ihre Daten über das Webinterface zuzugreifen)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Serverseitige Verschlüsselung (erlaubt es ihnen auf ihre Daten über das Webinterface und den Desktop-Client zuzugreifen)", +"None (no encryption at all)" => "Keine (ohne Verschlüsselung)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Wichtig: Sobald sie eine Verschlüsselungsmethode gewählt haben, können Sie diese nicht ändern!", +"User specific (let the user decide)" => "Benutzerspezifisch (der Benutzer kann entscheiden)", "Encryption" => "Verschlüsselung", "Exclude the following file types from encryption" => "Die folgenden Dateitypen von der Verschlüsselung ausnehmen", "None" => "Keine" diff --git a/apps/files_encryption/l10n/de_DE.php b/apps/files_encryption/l10n/de_DE.php index 34c596dc4bb..be4369ebf09 100644 --- a/apps/files_encryption/l10n/de_DE.php +++ b/apps/files_encryption/l10n/de_DE.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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.", +"Choose encryption mode:" => "Wählen Sie die Verschlüsselungsmethode:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Clientseitige Verschlüsselung (am sichersten, aber macht es unmöglich auf ihre Daten über das Webinterface zuzugreifen)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Serverseitige Verschlüsselung (erlaubt es ihnen auf ihre Daten über das Webinterface und den Desktop-Client zuzugreifen)", +"None (no encryption at all)" => "Keine (ohne Verschlüsselung)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Wichtig: Sobald sie eine Verschlüsselungsmethode gewählt haben, können Sie diese nicht ändern!", +"User specific (let the user decide)" => "Benutzerspezifisch (der Benutzer kann entscheiden)", "Encryption" => "Verschlüsselung", "Exclude the following file types from encryption" => "Die folgenden Dateitypen von der Verschlüsselung ausnehmen", "None" => "Keine" diff --git a/apps/files_encryption/l10n/el.php b/apps/files_encryption/l10n/el.php index 70e65a5237d..50b812c82df 100644 --- a/apps/files_encryption/l10n/el.php +++ b/apps/files_encryption/l10n/el.php @@ -1,4 +1,8 @@ <?php $TRANSLATIONS = array( +"Change encryption password to login password" => "Αλλαγή ÏƒÏ…Î½Î¸Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï ÎºÏυπτογÏάφησης στο συνθηματικό εισόδου ", +"Please check your passwords and try again." => "ΠαÏακαλώ ελÎγξτε το συνθηματικό σας και Ï€Ïοσπαθήστε ξανά.", +"Could not change your file encryption password to your login password" => "Αδυναμία αλλαγής ÏƒÏ…Î½Î¸Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï ÎºÏυπτογÏάφησης αÏχείων στο συνθηματικό εισόδου σας", +"Choose encryption mode:" => "Επιλογή κατάστασης κÏυπτογÏάφησης:", "Encryption" => "ΚÏυπτογÏάφηση", "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 1fea54ff358..2c6b650960a 100644 --- a/apps/files_encryption/l10n/es.php +++ b/apps/files_encryption/l10n/es.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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", +"Choose encryption mode:" => "Elegir el modo de cifrado:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Cifrado del lado del Cliente ( es el más seguro, pero hace que sea imposible acceder a sus datos desde la interfaz web)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Cifrado del lado del Servidor (le permite acceder a sus archivos desde la interfaz web y el cliente de escritorio)", +"None (no encryption at all)" => "Ninguno (ningún cifrado en absoluto)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Importante: Una vez que haya seleccionado un modo de cifrado no existe forma de cambiarlo de nuevo", +"User specific (let the user decide)" => "EspecÃfico del usuario (dejar que el usuario decida)", "Encryption" => "Cifrado", "Exclude the following file types from encryption" => "Excluir del cifrado los siguientes tipos de archivo", "None" => "Ninguno" diff --git a/apps/files_encryption/l10n/es_AR.php b/apps/files_encryption/l10n/es_AR.php index 31898f50fde..5cf0b8e4adc 100644 --- a/apps/files_encryption/l10n/es_AR.php +++ b/apps/files_encryption/l10n/es_AR.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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", +"Choose encryption mode:" => "Elegir el modo de encriptación:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Encriptación por parte del cliente (es el modo más seguro, pero hace que sea imposible acceder a tus datos desde la interfaz web)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Encriptación por parte del servidor (te permite acceder a tus archivos desde la interfaz web y desde el cliente de escritorio)", +"None (no encryption at all)" => "Ninguno (ninguna encriptación en absoluto)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Importante: Una vez que haya seleccionado un modo de encriptación, no existe forma de cambiarlo nuevamente", +"User specific (let the user decide)" => "EspecÃfico por usuario (deja que el usuario decida)", "Encryption" => "Encriptación", "Exclude the following file types from encryption" => "Exceptuar de la encriptación los siguientes tipos de archivo", "None" => "Ninguno" diff --git a/apps/files_encryption/l10n/eu.php b/apps/files_encryption/l10n/eu.php index 2bb1a46954c..e7372937e4a 100644 --- a/apps/files_encryption/l10n/eu.php +++ b/apps/files_encryption/l10n/eu.php @@ -1,4 +1,8 @@ <?php $TRANSLATIONS = array( +"Please check your passwords and try again." => "Mesedez egiaztatu zure pasahitza eta saia zaitez berriro:", +"Choose encryption mode:" => "Hautatu enkriptazio modua:", +"None (no encryption at all)" => "Bat ere ez (enkriptaziorik gabe)", +"User specific (let the user decide)" => "Erabiltzaileak zehaztuta (utzi erabiltzaileari hautatzen)", "Encryption" => "Enkriptazioa", "Exclude the following file types from encryption" => "Ez enkriptatu hurrengo fitxategi motak", "None" => "Bat ere ez" diff --git a/apps/files_encryption/l10n/fr.php b/apps/files_encryption/l10n/fr.php index f78a90ad59b..41e37134d4e 100644 --- a/apps/files_encryption/l10n/fr.php +++ b/apps/files_encryption/l10n/fr.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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", +"Choose encryption mode:" => "Choix du type de chiffrement :", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Chiffrement côté client (plus sécurisé, mais ne permet pas l'accès à vos données depuis l'interface web)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Chiffrement côté serveur (vous permet d'accéder à vos fichiers depuis l'interface web et depuis le client de synchronisation)", +"None (no encryption at all)" => "Aucun (pas de chiffrement)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Important : Une fois le mode de chiffrement choisi, il est impossible de revenir en arrière", +"User specific (let the user decide)" => "Propre à l'utilisateur (laisse le choix à l'utilisateur)", "Encryption" => "Chiffrement", "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/hu_HU.php b/apps/files_encryption/l10n/hu_HU.php index 1ef1effd41e..e32de01f973 100644 --- a/apps/files_encryption/l10n/hu_HU.php +++ b/apps/files_encryption/l10n/hu_HU.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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", +"Choose encryption mode:" => "Válassza ki a titkosÃtási módot:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Kliens oldali titkosÃtás (biztonságosabb, de lehetetlenné teszi a fájlok elérését a böngészÅ‘bÅ‘l)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Kiszolgáló oldali titkosÃtás (lehetÅ‘vé teszi a fájlok elérését úgy böngészÅ‘bÅ‘l mint az asztali kliensbÅ‘l)", +"None (no encryption at all)" => "Semmi (semmilyen titkosÃtás)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Fontos: Ha egyszer kiválasztotta a titkosÃtás módját, többé már nem lehet megváltoztatni", +"User specific (let the user decide)" => "Felhasználó specifikus (a felhasználó választhat)", "Encryption" => "TitkosÃtás", "Exclude the following file types from encryption" => "A következÅ‘ fájltÃpusok kizárása a titkosÃtásból", "None" => "Egyik sem" diff --git a/apps/files_encryption/l10n/it.php b/apps/files_encryption/l10n/it.php index d7e68a66e97..0c394564e0f 100644 --- a/apps/files_encryption/l10n/it.php +++ b/apps/files_encryption/l10n/it.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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", +"Choose encryption mode:" => "Scegli la modalità di cifratura.", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Cifratura lato client (più sicura ma rende impossibile accedere ai propri dati dall'interfaccia web)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Cifratura lato server (ti consente di accedere ai tuoi file dall'interfaccia web e dal client desktop)", +"None (no encryption at all)" => "Nessuna (senza alcuna cifratura)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Importante: una volta selezionata la modalità di cifratura non sarà possibile tornare indietro", +"User specific (let the user decide)" => "Specificato dall'utente (lascia decidere all'utente)", "Encryption" => "Cifratura", "Exclude the following file types from encryption" => "Escludi i seguenti tipi di file dalla cifratura", "None" => "Nessuna" diff --git a/apps/files_encryption/l10n/ja_JP.php b/apps/files_encryption/l10n/ja_JP.php index bd630c1d71f..4100908e00c 100644 --- a/apps/files_encryption/l10n/ja_JP.php +++ b/apps/files_encryption/l10n/ja_JP.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "変æ›ã‚’完了ã™ã‚‹ãŸã‚ã«ã€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" => "ファイル暗å·åŒ–パスワードをãƒã‚°ã‚¤ãƒ³ãƒ‘スワードã«å¤‰æ›´ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚", +"Choose encryption mode:" => "æš—å·åŒ–ãƒ¢ãƒ¼ãƒ‰ã‚’é¸æŠž:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚µã‚¤ãƒ‰ã®æš—å·åŒ–(最もセã‚ュアã§ã™ãŒã€WEBインターフェースã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããªããªã‚Šã¾ã™ï¼‰", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "サーãƒã‚µã‚¤ãƒ‰æš—å·åŒ–(WEBインターフェースãŠã‚ˆã³ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—クライアントã‹ã‚‰ãƒ•ァイルã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ï¼‰", +"None (no encryption at all)" => "æš—å·åŒ–ç„¡ã—(何も暗å·åŒ–ã—ã¾ã›ã‚“)", +"Important: Once you selected an encryption mode there is no way to change it back" => "é‡è¦: 一度暗å·åŒ–ã‚’é¸æŠžã—ã¦ã—ã¾ã†ã¨ã€ã‚‚ã¨ã«æˆ»ã™æ–¹æ³•ã¯ã‚りã¾ã›ã‚“", +"User specific (let the user decide)" => "ユーザ指定(ユーザãŒé¸ã¹ã‚‹ã‚ˆã†ã«ã™ã‚‹ï¼‰", "Encryption" => "æš—å·åŒ–", "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 68d60c1ae30..901c41e12ec 100644 --- a/apps/files_encryption/l10n/ko.php +++ b/apps/files_encryption/l10n/ko.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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" => "암호화 암호를 ë¡œê·¸ì¸ ì•”í˜¸ë¡œ ë³€ê²½í• ìˆ˜ 없습니다", +"Choose encryption mode:" => "암호화 모드 ì„ íƒ:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "í´ë¼ì´ì–¸íЏ 암호화 (ì•ˆì „í•˜ì§€ë§Œ 웹ì—서 ë°ì´í„°ì— ì ‘ê·¼í• ìˆ˜ ì—†ìŒ)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "서버 암호화 (웹 ë° ë°ìФí¬í†± í´ë¼ì´ì–¸íЏì—서 ë°ì´í„°ì— ì ‘ê·¼í• ìˆ˜ 있ìŒ)", +"None (no encryption at all)" => "ì—†ìŒ (암호화하지 않ìŒ)", +"Important: Once you selected an encryption mode there is no way to change it back" => "알림: 암호화 모드를 ì„ íƒí•˜ë©´ 다른 것으로 ë³€ê²½í• ìˆ˜ 없습니다", +"User specific (let the user decide)" => "ì‚¬ìš©ìž ì§€ì • (사용ìžë³„ ì„¤ì •)", "Encryption" => "암호화", "Exclude the following file types from encryption" => "ë‹¤ìŒ íŒŒì¼ í˜•ì‹ì€ 암호화하지 않ìŒ", "None" => "ì—†ìŒ" diff --git a/apps/files_encryption/l10n/pt_BR.php b/apps/files_encryption/l10n/pt_BR.php index 086d073cf5c..8bd6492a8f7 100644 --- a/apps/files_encryption/l10n/pt_BR.php +++ b/apps/files_encryption/l10n/pt_BR.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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", +"Choose encryption mode:" => "Escolha o modo de criptografia:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Criptografia por parte do cliente (mais segura, mas torna impossÃvel acessar seus dados a partir da interface web)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Criptografia por parte do servidor (permite que você acesse seus arquivos da interface web e do cliente desktop)", +"None (no encryption at all)" => "Nenhuma (sem qualquer criptografia)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Importante: Uma vez que tiver escolhido um modo de criptografia, não há um meio de voltar atrás", +"User specific (let the user decide)" => "EspecÃfico por usuário (deixa o usuário decidir)", "Encryption" => "Criptografia", "Exclude the following file types from encryption" => "Excluir os seguintes tipos de arquivo da criptografia", "None" => "Nenhuma" diff --git a/apps/files_encryption/l10n/pt_PT.php b/apps/files_encryption/l10n/pt_PT.php index 5634184a3b6..b6eedcdc509 100644 --- a/apps/files_encryption/l10n/pt_PT.php +++ b/apps/files_encryption/l10n/pt_PT.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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", +"Choose encryption mode:" => "Escolha o método de encriptação", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Encriptação do lado do cliente (mais seguro mas torna possÃvel o acesso aos dados através do interface web)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Encriptação do lado do servidor (permite o acesso aos seus ficheiros através do interface web e do cliente de sincronização)", +"None (no encryption at all)" => "Nenhuma (sem encriptação)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Importante: Uma vez escolhido o modo de encriptação, não existe maneira de o alterar!", +"User specific (let the user decide)" => "Escolhido pelo utilizador", "Encryption" => "Encriptação", "Exclude the following file types from encryption" => "Excluir da encriptação os seguintes tipo de ficheiros", "None" => "Nenhum" diff --git a/apps/files_encryption/l10n/ro.php b/apps/files_encryption/l10n/ro.php index fc0f24f483d..f958692dd8d 100644 --- a/apps/files_encryption/l10n/ro.php +++ b/apps/files_encryption/l10n/ro.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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", +"Choose encryption mode:" => "Alege tipul de ecripÈ›ie", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "EncripÈ›ie locală (cea mai sigură, dar face ca datele să nu mai fie accesibile din interfaÈ›a web)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "EncripÈ›ie pe server (permite să accesezi datele tale din interfaÈ›a web È™i din clientul pentru calculator)", +"None (no encryption at all)" => "Fără (nici un fel de ecriptare)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Important: Din moment ce ai setat un mod de encriptare, nu mai există metode de a-l schimba înapoi", +"User specific (let the user decide)" => "Spefic fiecărui utilizator (lasă utilizatorul să decidă)", "Encryption" => "ÃŽncriptare", "Exclude the following file types from encryption" => "Exclude următoarele tipuri de fiÈ™iere de la încriptare", "None" => "Niciuna" diff --git a/apps/files_encryption/l10n/ru_RU.php b/apps/files_encryption/l10n/ru_RU.php index 4321fb8a8a3..1149ac64f3e 100644 --- a/apps/files_encryption/l10n/ru_RU.php +++ b/apps/files_encryption/l10n/ru_RU.php @@ -1,4 +1,13 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "ПожалуйÑта, переключитеÑÑŒ на ownCloud-клиент и измените Ваш пароль ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð°Ñ†Ð¸Ð¸.", +"switched to client side encryption" => "переключено на шифрование на клиентÑкой Ñтороне", +"Please check your passwords and try again." => "ПожалуйÑта, проверьте Ваш пароль и попробуйте Ñнова", +"Choose encryption mode:" => "Выберите ÑпоÑоб шифрованиÑ:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Шифрование на Ñтороне клиента (наиболее безопаÑно, но делает невозможным получение доÑтупа к Вашим данным по вÑб-интерфейÑу)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Шифрование на Ñтороне Ñервера (позволÑет Вам получить доÑтуп к Вашим файлам по вÑб-интерфейÑу и деÑктопному клиенту)", +"None (no encryption at all)" => "Ðет (шифрование полноÑтью отÑутÑтвует)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Важно: Ðевозможно будет изменить выбранный ÑпоÑоб шифрованиÑ", +"User specific (let the user decide)" => "Специфика Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (позволено решить пользователю)", "Encryption" => "Шифрование", "Exclude the following file types from encryption" => "ИÑключите Ñледующие типы файлов из шифрованиÑ", "None" => "Ðи один" diff --git a/apps/files_encryption/l10n/sk_SK.php b/apps/files_encryption/l10n/sk_SK.php index 5aebb6e35bd..355b45a4ce2 100644 --- a/apps/files_encryption/l10n/sk_SK.php +++ b/apps/files_encryption/l10n/sk_SK.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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", +"Choose encryption mode:" => "Vyberte režim Å¡ifrovania:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Å ifrovanie prostrednÃctvom klienta (najbezpeÄnejÅ¡ia voľba, neumožňuje vÅ¡ak prÃstup k súborom z webového rozhrania)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Å ifrovanie na serveri (umožňuje pristupovaÅ¥ k súborom z webového rozhrania a desktopového klienta)", +"None (no encryption at all)" => "Žiadne (žiadne Å¡ifrovanie)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Dôležité: ak si zvolÃte režim Å¡ifrovania, nie je možné ho znovu zruÅ¡iÅ¥", +"User specific (let the user decide)" => "Definovaný použÃvateľom (umožňuje použÃvateľovi vybraÅ¥ si)", "Encryption" => "Å ifrovanie", "Exclude the following file types from encryption" => "VynechaÅ¥ nasledujúce súbory pri Å¡ifrovanÃ", "None" => "Žiadne" diff --git a/apps/files_encryption/l10n/sv.php b/apps/files_encryption/l10n/sv.php index c154de1a768..9b6ce141782 100644 --- a/apps/files_encryption/l10n/sv.php +++ b/apps/files_encryption/l10n/sv.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "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", +"Choose encryption mode:" => "Välj krypteringsläge:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Kryptering pÃ¥ klientsidan (säkraste men gör det omöjligt att komma Ã¥t dina filer med en webbläsare)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Kryptering pÃ¥ serversidan (kan komma Ã¥t dina filer frÃ¥n webbläsare och datorklient)", +"None (no encryption at all)" => "Ingen (ingen kryptering alls)", +"Important: Once you selected an encryption mode there is no way to change it back" => "Viktigt: När du har valt ett krypteringsläge finns det inget sätt att ändra tillbaka", +"User specific (let the user decide)" => "Användarspecifik (lÃ¥ter användaren bestämma)", "Encryption" => "Kryptering", "Exclude the following file types from encryption" => "Exkludera följande filtyper frÃ¥n kryptering", "None" => "Ingen" diff --git a/apps/files_encryption/l10n/th_TH.php b/apps/files_encryption/l10n/th_TH.php index 65fcd80685f..f8c19456ab3 100644 --- a/apps/files_encryption/l10n/th_TH.php +++ b/apps/files_encryption/l10n/th_TH.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "à¸à¸£à¸¸à¸“าสลับไปที่โปรà¹à¸à¸£à¸¡à¹„คลเà¸à¸™à¸•์ 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" => "ไม่สามารถเปลี่ยนรหัสผ่านสำหรับà¸à¸²à¸£à¹€à¸‚้ารหัสไฟล์ขà¸à¸‡à¸„ุณไปเป็นรหัสผ่านสำหรับà¸à¸²à¸£à¹€à¸‚้าสู่ระบบขà¸à¸‡à¸„ุณได้", +"Choose encryption mode:" => "เลืà¸à¸à¸£à¸¹à¸›à¹à¸šà¸šà¸à¸²à¸£à¹€à¸‚้ารหัส:", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "à¸à¸²à¸£à¹€à¸‚้ารหัสด้วยโปรà¹à¸à¸£à¸¡à¹„คลเà¸à¸™à¸•์ (ปลà¸à¸”ภัยที่สุด à¹à¸•่จะทำให้คุณไม่สามารถเข้าถึงข้à¸à¸¡à¸¹à¸¥à¸•่างๆจาà¸à¸«à¸™à¹‰à¸²à¸ˆà¸à¹€à¸§à¹‡à¸šà¹„ซต์ได้)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "à¸à¸²à¸£à¹€à¸‚้ารหัสจาà¸à¸—างà¸à¸±à¹ˆà¸‡à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸à¸£à¹Œ (à¸à¸™à¸¸à¸à¸²à¸•ให้คุณเข้าถึงไฟล์ขà¸à¸‡à¸„ุณจาà¸à¸«à¸™à¹‰à¸²à¸ˆà¸à¹€à¸§à¹‡à¸šà¹„ซต์ à¹à¸¥à¸°à¹‚ปรà¹à¸à¸£à¸¡à¹„คลเà¸à¸™à¸•์จาà¸à¹€à¸„รื่à¸à¸‡à¹€à¸”สà¸à¹Œà¸—็à¸à¸›à¹„ด้)", +"None (no encryption at all)" => "ไม่ต้à¸à¸‡ (ไม่มีà¸à¸²à¸£à¹€à¸‚้ารหัสเลย)", +"Important: Once you selected an encryption mode there is no way to change it back" => "ข้à¸à¸„วามสำคัà¸: หลังจาà¸à¸—ี่คุณได้เลืà¸à¸à¸£à¸¹à¸›à¹à¸šà¸šà¸à¸²à¸£à¹€à¸‚้ารหัสà¹à¸¥à¹‰à¸§ จะไม่สามารถเปลี่ยนà¸à¸¥à¸±à¸šà¸¡à¸²à¹ƒà¸«à¸¡à¹ˆà¹„ด้à¸à¸µà¸", +"User specific (let the user decide)" => "ให้ผู้ใช้งานเลืà¸à¸à¹€à¸à¸‡ (ปล่à¸à¸¢à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸•ัดสินใจเà¸à¸‡)", "Encryption" => "à¸à¸²à¸£à¹€à¸‚้ารหัส", "Exclude the following file types from encryption" => "ไม่ต้à¸à¸‡à¸£à¸§à¸¡à¸Šà¸™à¸´à¸”ขà¸à¸‡à¹„ฟล์ดังต่à¸à¹„ปนี้จาà¸à¸à¸²à¸£à¹€à¸‚้ารหัส", "None" => "ไม่ต้à¸à¸‡" diff --git a/apps/files_encryption/l10n/zh_TW.php b/apps/files_encryption/l10n/zh_TW.php index fecebbe2509..146724def08 100644 --- a/apps/files_encryption/l10n/zh_TW.php +++ b/apps/files_encryption/l10n/zh_TW.php @@ -1,4 +1,15 @@ <?php $TRANSLATIONS = array( +"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "請至您的 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" => "ç„¡æ³•è®Šæ›´æ‚¨çš„æª”æ¡ˆåŠ å¯†å¯†ç¢¼ç‚ºç™»å…¥å¯†ç¢¼", +"Choose encryption mode:" => "鏿“‡åŠ å¯†æ¨¡å¼ï¼š", +"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "å®¢æˆ¶ç«¯åŠ å¯† (最安全但是會使您無法從網é 界é¢å˜å–您的檔案)", +"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "伺æœå™¨ç«¯åР坆 (您å¯ä»¥å¾žç¶²é 界é¢åŠå®¢æˆ¶ç«¯ç¨‹å¼å˜å–您的檔案)", +"None (no encryption at all)" => "ç„¡ (ä¸åР坆)", +"Important: Once you selected an encryption mode there is no way to change it back" => "é‡è¦ï¼šä¸€æ—¦æ‚¨é¸æ“‡äº†åŠ å¯†å°±ç„¡æ³•å†æ”¹å›žä¾†", +"User specific (let the user decide)" => "使用者自訂 (讓使用者自己決定)", "Encryption" => "åŠ å¯†", "Exclude the following file types from encryption" => "下列的檔案類型ä¸åР坆", "None" => "ç„¡" diff --git a/apps/files_encryption/test/crypt.php b/apps/files_encryption/test/crypt.php index 755a6cc72fa..aa87ec32821 100755 --- a/apps/files_encryption/test/crypt.php +++ b/apps/files_encryption/test/crypt.php @@ -609,42 +609,42 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // $decrypted=OC_Encryption\Crypt::decrypt($encrypted,$key); // $decrypted=rtrim($decrypted, "\0"); // $this->assertNotEquals($encrypted,$source); -// $this->assertEqual($decrypted,$source); +// $this->assertEquals($decrypted,$source); // // $chunk=substr($source,0,8192); // $encrypted=OC_Encryption\Crypt::encrypt($chunk,$key); -// $this->assertEqual(strlen($chunk),strlen($encrypted)); +// $this->assertEquals(strlen($chunk),strlen($encrypted)); // $decrypted=OC_Encryption\Crypt::decrypt($encrypted,$key); // $decrypted=rtrim($decrypted, "\0"); -// $this->assertEqual($decrypted,$chunk); +// $this->assertEquals($decrypted,$chunk); // // $encrypted=OC_Encryption\Crypt::blockEncrypt($source,$key); // $decrypted=OC_Encryption\Crypt::blockDecrypt($encrypted,$key); // $this->assertNotEquals($encrypted,$source); -// $this->assertEqual($decrypted,$source); +// $this->assertEquals($decrypted,$source); // // $tmpFileEncrypted=OCP\Files::tmpFile(); // OC_Encryption\Crypt::encryptfile($file,$tmpFileEncrypted,$key); // $encrypted=file_get_contents($tmpFileEncrypted); // $decrypted=OC_Encryption\Crypt::blockDecrypt($encrypted,$key); // $this->assertNotEquals($encrypted,$source); -// $this->assertEqual($decrypted,$source); +// $this->assertEquals($decrypted,$source); // // $tmpFileDecrypted=OCP\Files::tmpFile(); // OC_Encryption\Crypt::decryptfile($tmpFileEncrypted,$tmpFileDecrypted,$key); // $decrypted=file_get_contents($tmpFileDecrypted); -// $this->assertEqual($decrypted,$source); +// $this->assertEquals($decrypted,$source); // // $file=OC::$SERVERROOT.'/core/img/weather-clear.png'; // $source=file_get_contents($file); //binary file // $encrypted=OC_Encryption\Crypt::encrypt($source,$key); // $decrypted=OC_Encryption\Crypt::decrypt($encrypted,$key); // $decrypted=rtrim($decrypted, "\0"); -// $this->assertEqual($decrypted,$source); +// $this->assertEquals($decrypted,$source); // // $encrypted=OC_Encryption\Crypt::blockEncrypt($source,$key); // $decrypted=OC_Encryption\Crypt::blockDecrypt($encrypted,$key); -// $this->assertEqual($decrypted,$source); +// $this->assertEquals($decrypted,$source); // // } // @@ -657,11 +657,11 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // $decrypted=OC_Encryption\Crypt::decrypt($encrypted,$key); // // $decrypted=rtrim($decrypted, "\0"); -// $this->assertEqual($decrypted,$source); +// $this->assertEquals($decrypted,$source); // // $encrypted=OC_Encryption\Crypt::blockEncrypt($source,$key); // $decrypted=OC_Encryption\Crypt::blockDecrypt($encrypted,$key,strlen($source)); -// $this->assertEqual($decrypted,$source); +// $this->assertEquals($decrypted,$source); // } } diff --git a/apps/files_encryption/test/proxy.php b/apps/files_encryption/test/proxy.php index 51e77100baa..709730f7609 100644 --- a/apps/files_encryption/test/proxy.php +++ b/apps/files_encryption/test/proxy.php @@ -109,7 +109,7 @@ // // } -// class Test_CryptProxy extends UnitTestCase { +// class Test_CryptProxy extends PHPUnit_Framework_TestCase { // private $oldConfig; // private $oldKey; // @@ -161,9 +161,9 @@ // OC_FileProxy::$enabled=true; // // $fromFile=OC_Filesystem::file_get_contents('/file'); -// $this->assertNotEqual($original,$stored); -// $this->assertEqual(strlen($original),strlen($fromFile)); -// $this->assertEqual($original,$fromFile); +// $this->assertNotEquals($original,$stored); +// $this->assertEquals(strlen($original),strlen($fromFile)); +// $this->assertEquals($original,$fromFile); // // } // @@ -181,12 +181,12 @@ // $stored=$rootView->file_get_contents($userDir.'/file'); // OC_FileProxy::$enabled=true; // -// $this->assertNotEqual($original,$stored); +// $this->assertNotEquals($original,$stored); // $fromFile=$rootView->file_get_contents($userDir.'/file'); -// $this->assertEqual($original,$fromFile); +// $this->assertEquals($original,$fromFile); // // $fromFile=$view->file_get_contents('files/file'); -// $this->assertEqual($original,$fromFile); +// $this->assertEquals($original,$fromFile); // } // // public function testBinary(){ @@ -200,9 +200,9 @@ // OC_FileProxy::$enabled=true; // // $fromFile=OC_Filesystem::file_get_contents('/file'); -// $this->assertNotEqual($original,$stored); -// $this->assertEqual(strlen($original),strlen($fromFile)); -// $this->assertEqual($original,$fromFile); +// $this->assertNotEquals($original,$stored); +// $this->assertEquals(strlen($original),strlen($fromFile)); +// $this->assertEquals($original,$fromFile); // // $file=__DIR__.'/zeros'; // $original=file_get_contents($file); @@ -214,7 +214,7 @@ // OC_FileProxy::$enabled=true; // // $fromFile=OC_Filesystem::file_get_contents('/file'); -// $this->assertNotEqual($original,$stored); -// $this->assertEqual(strlen($original),strlen($fromFile)); +// $this->assertNotEquals($original,$stored); +// $this->assertEquals(strlen($original),strlen($fromFile)); // } // } diff --git a/apps/files_encryption/test/stream.php b/apps/files_encryption/test/stream.php index 4211cab3104..ba82ac80eab 100644 --- a/apps/files_encryption/test/stream.php +++ b/apps/files_encryption/test/stream.php @@ -117,7 +117,7 @@ // // // // fclose( $stream ); // // -// // $this->assertEqual( 'foobar', $data ); +// // $this->assertEquals( 'foobar', $data ); // // // // // // $file = OC::$SERVERROOT.'/3rdparty/MDB2.php'; @@ -139,15 +139,15 @@ // // // // $original = file_get_contents( $file ); // // -// // $this->assertEqual( strlen( $original ), strlen( $data ) ); +// // $this->assertEquals( strlen( $original ), strlen( $data ) ); // // -// // $this->assertEqual( $original, $data ); +// // $this->assertEquals( $original, $data ); // // // // } // // } // -// // class Test_CryptStream extends UnitTestCase { +// // class Test_CryptStream extends PHPUnit_Framework_TestCase { // // private $tmpFiles=array(); // // // // function testStream(){ @@ -158,7 +158,7 @@ // // $stream=$this->getStream('test1','r',strlen('foobar')); // // $data=fread($stream,6); // // fclose($stream); -// // $this->assertEqual('foobar',$data); +// // $this->assertEquals('foobar',$data); // // // // $file=OC::$SERVERROOT.'/3rdparty/MDB2.php'; // // $source=fopen($file,'r'); @@ -170,8 +170,8 @@ // // $stream=$this->getStream('test2','r',filesize($file)); // // $data=stream_get_contents($stream); // // $original=file_get_contents($file); -// // $this->assertEqual(strlen($original),strlen($data)); -// // $this->assertEqual($original,$data); +// // $this->assertEquals(strlen($original),strlen($data)); +// // $this->assertEquals($original,$data); // // } // // // // /** @@ -207,8 +207,8 @@ // // $stream=$this->getStream('test','r',strlen($source)); // // $data=stream_get_contents($stream); // // fclose($stream); -// // $this->assertEqual(strlen($data),strlen($source)); -// // $this->assertEqual($source,$data); +// // $this->assertEquals(strlen($data),strlen($source)); +// // $this->assertEquals($source,$data); // // // // $file=__DIR__.'/zeros'; // // $source=file_get_contents($file); @@ -220,7 +220,7 @@ // // $stream=$this->getStream('test2','r',strlen($source)); // // $data=stream_get_contents($stream); // // fclose($stream); -// // $this->assertEqual(strlen($data),strlen($source)); -// // $this->assertEqual($source,$data); +// // $this->assertEquals(strlen($data),strlen($source)); +// // $this->assertEquals($source,$data); // // } // // } diff --git a/apps/files_encryption/test/util.php b/apps/files_encryption/test/util.php index 79f8ede543d..1cdeff8008d 100755 --- a/apps/files_encryption/test/util.php +++ b/apps/files_encryption/test/util.php @@ -218,7 +218,7 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { // // $decrypted = $c->legacyDecrypt( $encrypted, $c->legacyKey ); // -// $this->assertEqual( $decrypted, $this->data ); +// $this->assertEquals( $decrypted, $this->data ); // // } diff --git a/apps/files_external/ajax/addRootCertificate.php b/apps/files_external/ajax/addRootCertificate.php index be60b415e1b..2f67e801b2c 100644 --- a/apps/files_external/ajax/addRootCertificate.php +++ b/apps/files_external/ajax/addRootCertificate.php @@ -12,8 +12,10 @@ $data = fread($fh, filesize($_FILES['rootcert_import']['tmp_name'])); fclose($fh); $filename = $_FILES['rootcert_import']['name']; -$view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_external/uploads'); -if ( ! $view->file_exists('')) $view->mkdir(''); +$view = new \OC\Files\View('/'.\OCP\User::getUser().'/files_external/uploads'); +if (!$view->file_exists('')){ + $view->mkdir(''); +} $isValid = openssl_pkey_get_public($data); diff --git a/apps/files_external/appinfo/app.php b/apps/files_external/appinfo/app.php index 837d35c9c63..c58cfcd0f5e 100644 --- a/apps/files_external/appinfo/app.php +++ b/apps/files_external/appinfo/app.php @@ -6,14 +6,14 @@ * See the COPYING-README file. */ -OC::$CLASSPATH['OC_FileStorage_StreamWrapper']='apps/files_external/lib/streamwrapper.php'; -OC::$CLASSPATH['OC_Filestorage_FTP']='apps/files_external/lib/ftp.php'; -OC::$CLASSPATH['OC_Filestorage_DAV']='apps/files_external/lib/webdav.php'; -OC::$CLASSPATH['OC_Filestorage_Google']='apps/files_external/lib/google.php'; -OC::$CLASSPATH['OC_Filestorage_SWIFT']='apps/files_external/lib/swift.php'; -OC::$CLASSPATH['OC_Filestorage_SMB']='apps/files_external/lib/smb.php'; -OC::$CLASSPATH['OC_Filestorage_AmazonS3']='apps/files_external/lib/amazons3.php'; -OC::$CLASSPATH['OC_Filestorage_Dropbox']='apps/files_external/lib/dropbox.php'; +OC::$CLASSPATH['OC\Files\Storage\StreamWrapper']='apps/files_external/lib/streamwrapper.php'; +OC::$CLASSPATH['OC\Files\Storage\FTP']='apps/files_external/lib/ftp.php'; +OC::$CLASSPATH['OC\Files\Storage\DAV']='apps/files_external/lib/webdav.php'; +OC::$CLASSPATH['OC\Files\Storage\Google']='apps/files_external/lib/google.php'; +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_Mount_Config']='apps/files_external/lib/config.php'; OCP\App::registerAdmin('files_external', 'settings'); diff --git a/apps/files_external/appinfo/info.xml b/apps/files_external/appinfo/info.xml index 3da1913c5fc..2c04216a9fb 100644 --- a/apps/files_external/appinfo/info.xml +++ b/apps/files_external/appinfo/info.xml @@ -5,7 +5,7 @@ <description>Mount external storage sources</description> <licence>AGPL</licence> <author>Robin Appelman, Michael Gapczynski</author> - <require>4.9</require> + <require>4.91</require> <shipped>true</shipped> <types> <filesystem/> diff --git a/apps/files_external/js/dropbox.js b/apps/files_external/js/dropbox.js index c1e38640708..a9a3155e677 100644 --- a/apps/files_external/js/dropbox.js +++ b/apps/files_external/js/dropbox.js @@ -1,6 +1,6 @@ $(document).ready(function() { - $('#externalStorage tbody tr.OC_Filestorage_Dropbox').each(function() { + $('#externalStorage tbody tr.\\\\OC\\\\Files\\\\Storage\\\\Dropbox').each(function() { var configured = $(this).find('[data-parameter="configured"]'); if ($(configured).val() == 'true') { $(this).find('.configuration input').attr('disabled', 'disabled'); @@ -38,7 +38,7 @@ $(document).ready(function() { $('#externalStorage tbody tr input').live('keyup', function() { var tr = $(this).parent().parent(); - if ($(tr).hasClass('OC_Filestorage_Dropbox') && $(tr).find('[data-parameter="configured"]').val() != 'true') { + if ($(tr).hasClass('\\\\OC\\\\Files\\\\Storage\\\\Dropbox') && $(tr).find('[data-parameter="configured"]').val() != 'true') { var config = $(tr).find('.configuration'); if ($(tr).find('.mountPoint input').val() != '' && $(config).find('[data-parameter="app_key"]').val() != '' && $(config).find('[data-parameter="app_secret"]').val() != '') { if ($(tr).find('.dropbox').length == 0) { diff --git a/apps/files_external/js/google.js b/apps/files_external/js/google.js index 0b3c314eb5d..7d759d13da4 100644 --- a/apps/files_external/js/google.js +++ b/apps/files_external/js/google.js @@ -1,6 +1,6 @@ $(document).ready(function() { - $('#externalStorage tbody tr.OC_Filestorage_Google').each(function() { + $('#externalStorage tbody tr.\\\\OC\\\\Files\\\\Storage\\\\Google').each(function() { var configured = $(this).find('[data-parameter="configured"]'); if ($(configured).val() == 'true') { $(this).find('.configuration') @@ -34,7 +34,8 @@ $(document).ready(function() { }); $('#externalStorage tbody tr').live('change', function() { - if ($(this).hasClass('OC_Filestorage_Google') && $(this).find('[data-parameter="configured"]').val() != 'true') { + console.log('hello'); + if ($(this).hasClass('\\\\OC\\\\Files\\\\Storage\\\\Google') && $(this).find('[data-parameter="configured"]').val() != 'true') { if ($(this).find('.mountPoint input').val() != '') { if ($(this).find('.google').length == 0) { $(this).find('.configuration').append('<a class="button google">'+t('files_external', 'Grant access')+'</a>'); @@ -45,7 +46,7 @@ $(document).ready(function() { $('#externalStorage tbody tr .mountPoint input').live('keyup', function() { var tr = $(this).parent().parent(); - if ($(tr).hasClass('OC_Filestorage_Google') && $(tr).find('[data-parameter="configured"]').val() != 'true' && $(tr).find('.google').length > 0) { + if ($(tr).hasClass('\\\\OC\\\\Files\\\\Storage\\\\Google') && $(tr).find('[data-parameter="configured"]').val() != 'true' && $(tr).find('.google').length > 0) { if ($(this).val() != '') { $(tr).find('.google').show(); } else { diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js index 0dc983ca8ad..6cbc2180084 100644 --- a/apps/files_external/js/settings.js +++ b/apps/files_external/js/settings.js @@ -100,7 +100,7 @@ $(document).ready(function() { td.append('<input type="text" data-parameter="'+parameter+'" placeholder="'+placeholder+'" />'); } }); - if (parameters['custom'] && $('#externalStorage tbody tr.'+backendClass).length == 1) { + if (parameters['custom'] && $('#externalStorage tbody tr.'+backendClass.replace(/\\/g, '\\\\')).length == 1) { OC.addScript('files_external', parameters['custom']); } return false; diff --git a/apps/files_external/l10n/ko.php b/apps/files_external/l10n/ko.php index cb691cf5e3d..47b75f74b86 100644 --- a/apps/files_external/l10n/ko.php +++ b/apps/files_external/l10n/ko.php @@ -5,8 +5,8 @@ "Fill out all required fields" => "ëª¨ë“ í•„ìˆ˜ í•ëª©ì„ ìž…ë ¥í•˜ì‹ì‹œì˜¤", "Please provide a valid Dropbox app key and secret." => "올바른 Dropbox 앱 키와 암호를 ìž…ë ¥í•˜ì‹ì‹œì˜¤.", "Error configuring Google Drive storage" => "Google 드ë¼ì´ë¸Œ ì €ìž¥ì†Œ ì„¤ì • 오류", -"<b>Warning:</b> \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "<b>ê²½ê³ </b>\"smbclient\"ê°€ 설치ë˜ì§€ 않았습니다. CIFS/SMB ê³µìœ ì• ì—°ê²°ì´ ë¶ˆê°€ëŠ¥ 합니다.. 시스템 관리ìžì—게 ìš”ì²í•˜ì—¬ 설치하시기 ë°”ëžë‹ˆë‹¤.", -"<b>Warning:</b> 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." => "<b>ê²½ê³ </b>PHPìš© FTP ì§€ì›ì´ 사용 불가능 하거나 설치ë˜ì§€ 않았습니다. FTP ê³µìœ ì— ì—°ê²°ì´ ë¶ˆê°€ëŠ¥ 합니다. 시스템 관리ìžì—게 ìš”ì²í•˜ì—¬ 설치하시기 ë°”ëžë‹ˆë‹¤. ", +"<b>Warning:</b> \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "<b>ê²½ê³ :</b> \"smbclient\"ê°€ 설치ë˜ì§€ 않았습니다. CIFS/SMB ê³µìœ ìžì›ì— ì—°ê²°í• ìˆ˜ 없습니다. 시스템 관리ìžì—게 설치를 ìš”ì²í•˜ì‹ì‹œì˜¤.", +"<b>Warning:</b> 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." => "<b>ê²½ê³ :</b> PHP FTP ì§€ì›ì´ 비활성화ë˜ì–´ 있거나 설치ë˜ì§€ 않았습니다. FTP ê³µìœ ë¥¼ ë§ˆìš´íŠ¸í• ìˆ˜ 없습니다. 시스템 관리ìžì—게 설치를 ìš”ì²í•˜ì‹ì‹œì˜¤.", "External Storage" => "외부 ì €ìž¥ì†Œ", "Mount point" => "마운트 ì§€ì ", "Backend" => "백엔드", diff --git a/apps/files_external/l10n/pt_BR.php b/apps/files_external/l10n/pt_BR.php index 26e927a423e..85393954886 100644 --- a/apps/files_external/l10n/pt_BR.php +++ b/apps/files_external/l10n/pt_BR.php @@ -5,6 +5,8 @@ "Fill out all required fields" => "Preencha todos os campos obrigatórios", "Please provide a valid Dropbox app key and secret." => "Por favor forneça um app key e secret válido do Dropbox", "Error configuring Google Drive storage" => "Erro ao configurar armazenamento do Google Drive", +"<b>Warning:</b> \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "<b>Aviso:</b> \"smbclient\" não está instalado. Não será possÃvel montar compartilhamentos de CIFS/SMB. Por favor, peça ao seu administrador do sistema para instalá-lo.", +"<b>Warning:</b> 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." => "<b>Aviso:</b> O suporte para FTP do PHP não está ativado ou instalado. Não será possÃvel montar compartilhamentos FTP. Por favor, peça ao seu administrador do sistema para instalá-lo.", "External Storage" => "Armazenamento Externo", "Mount point" => "Ponto de montagem", "Backend" => "Backend", diff --git a/apps/files_external/l10n/ro.php b/apps/files_external/l10n/ro.php index 6a152786808..ca2c9f7e5c8 100644 --- a/apps/files_external/l10n/ro.php +++ b/apps/files_external/l10n/ro.php @@ -1,4 +1,12 @@ <?php $TRANSLATIONS = array( +"Access granted" => "Acces permis", +"Error configuring Dropbox storage" => "Eroare la configurarea mediului de stocare Dropbox", +"Grant access" => "Permite accesul", +"Fill out all required fields" => "Completează toate câmpurile necesare", +"Please provide a valid Dropbox app key and secret." => "Prezintă te rog o cheie de Dropbox validă È™i parola", +"Error configuring Google Drive storage" => "Eroare la configurarea mediului de stocare Google Drive", +"<b>Warning:</b> \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "<b>AtenÈ›ie:</b> \"smbclient\" nu este instalat. Montarea mediilor CIFS/SMB partajate nu este posibilă. Solicită administratorului sistemului tău să îl instaleaze.", +"<b>Warning:</b> 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." => "<b>AtenÈ›ie:</b> suportul pentru FTP în PHP nu este activat sau instalat. Montarea mediilor FPT partajate nu este posibilă. Solicită administratorului sistemului tău să îl instaleze.", "External Storage" => "Stocare externă", "Mount point" => "Punctul de montare", "Backend" => "Backend", diff --git a/apps/files_external/l10n/sk_SK.php b/apps/files_external/l10n/sk_SK.php index 04d5e3c7ee4..0b6878a5427 100644 --- a/apps/files_external/l10n/sk_SK.php +++ b/apps/files_external/l10n/sk_SK.php @@ -5,6 +5,8 @@ "Fill out all required fields" => "Vyplňte vÅ¡etky vyžadované kolónky", "Please provide a valid Dropbox app key and secret." => "Zadajte platný kÄ¾ÃºÄ aplikácie a heslo Dropbox", "Error configuring Google Drive storage" => "Chyba pri konfigurácii úložiska Google drive", +"<b>Warning:</b> \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "<b>Upozornenie:</b> \"smbclient\" nie je nainÅ¡talovaný. Nie je možné pripojenie oddielov CIFS/SMB. Požiadajte administrátora systému, nech ho nainÅ¡taluje.", +"<b>Warning:</b> 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." => "<b>Upozornenie:</b> Podpora FTP v PHP nie je povolená alebo nainÅ¡talovaná. Nie je možné pripojenie oddielov FTP. Požiadajte administrátora systému, nech ho nainÅ¡taluje.", "External Storage" => "Externé úložisko", "Mount point" => "PrÃpojný bod", "Backend" => "Backend", diff --git a/apps/files_external/lib/amazons3.php b/apps/files_external/lib/amazons3.php index e5ef4eb097c..494885a1dd3 100644 --- a/apps/files_external/lib/amazons3.php +++ b/apps/files_external/lib/amazons3.php @@ -1,39 +1,43 @@ <?php /** -* ownCloud -* -* @author Michael Gapczynski -* @copyright 2012 Michael Gapczynski mtgap@owncloud.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* 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 <http://www.gnu.org/licenses/>. -*/ + * ownCloud + * + * @author Michael Gapczynski + * @copyright 2012 Michael Gapczynski mtgap@owncloud.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * 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 <http://www.gnu.org/licenses/>. + */ + +namespace OC\Files\Storage; require_once 'aws-sdk/sdk.class.php'; -class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common { +class AmazonS3 extends \OC\Files\Storage\Common { private $s3; private $bucket; private $objects = array(); + private $id; private static $tempFiles = array(); // TODO options: storage class, encryption server side, encrypt before upload? public function __construct($params) { - $this->s3 = new AmazonS3(array('key' => $params['key'], 'secret' => $params['secret'])); + $this->id = 'amazon::' . $params['key'] . md5($params['secret']); + $this->s3 = new \AmazonS3(array('key' => $params['key'], 'secret' => $params['secret'])); $this->bucket = $params['bucket']; } @@ -47,7 +51,7 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common { return $response; // This object could be a folder, a '/' must be at the end of the path } else if (substr($path, -1) != '/') { - $response = $this->s3->get_object_metadata($this->bucket, $path.'/'); + $response = $this->s3->get_object_metadata($this->bucket, $path . '/'); if ($response) { $this->objects[$path] = $response; return $response; @@ -57,6 +61,10 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common { return false; } + public function getId() { + return $this->id; + } + public function mkdir($path) { // Folders in Amazon S3 are 0 byte objects with a '/' at the end of the name if (substr($path, -1) != '/') { @@ -96,8 +104,8 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common { foreach ($response->body->CommonPrefixes as $object) { $files[] = basename($object->Prefix); } - OC_FakeDirStream::$dirs['amazons3'.$path] = $files; - return opendir('fakedir://amazons3'.$path); + \OC\Files\Stream\Dir::register('amazons3' . $path, $files); + return opendir('fakedir://amazons3' . $path); } return false; } @@ -107,15 +115,10 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common { $stat['size'] = $this->s3->get_bucket_filesize($this->bucket); $stat['atime'] = time(); $stat['mtime'] = $stat['atime']; - $stat['ctime'] = $stat['atime']; - } else { - $object = $this->getObject($path); - if ($object) { - $stat['size'] = $object['Size']; - $stat['atime'] = time(); - $stat['mtime'] = strtotime($object['LastModified']); - $stat['ctime'] = $stat['mtime']; - } + } else if ($object = $this->getObject($path)) { + $stat['size'] = $object['Size']; + $stat['atime'] = time(); + $stat['mtime'] = strtotime($object['LastModified']); } if (isset($stat)) { return $stat; @@ -166,7 +169,7 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common { switch ($mode) { case 'r': case 'rb': - $tmpFile = OC_Helper::tmpFile(); + $tmpFile = \OC_Helper::tmpFile(); $handle = fopen($tmpFile, 'w'); $response = $this->s3->get_object($this->bucket, $path, array('fileDownload' => $handle)); if ($response->isOK()) { @@ -190,14 +193,14 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common { } else { $ext = ''; } - $tmpFile = OC_Helper::tmpFile($ext); - OC_CloseStreamWrapper::$callBacks[$tmpFile] = array($this, 'writeBack'); + $tmpFile = \OC_Helper::tmpFile($ext); + \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack')); if ($this->file_exists($path)) { $source = $this->fopen($path, 'r'); file_put_contents($tmpFile, $source); } self::$tempFiles[$tmpFile] = $path; - return fopen('close://'.$tmpFile, $mode); + return fopen('close://' . $tmpFile, $mode); } return false; } @@ -206,8 +209,8 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common { if (isset(self::$tempFiles[$tmpFile])) { $handle = fopen($tmpFile, 'r'); $response = $this->s3->create_object($this->bucket, - self::$tempFiles[$tmpFile], - array('fileUpload' => $handle)); + self::$tempFiles[$tmpFile], + array('fileUpload' => $handle)); if ($response->isOK()) { unlink($tmpFile); } diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php index fd3dc2ca0d0..6b0df21461b 100755 --- a/apps/files_external/lib/config.php +++ b/apps/files_external/lib/config.php @@ -38,20 +38,20 @@ class OC_Mount_Config { * @return array */ public static function getBackends() { - - $backends['OC_Filestorage_Local']=array( + + $backends['\OC\Files\Storage\Local']=array( 'backend' => 'Local', 'configuration' => array( 'datadir' => 'Location')); - $backends['OC_Filestorage_AmazonS3']=array( + $backends['\OC\Files\Storage\AmazonS3']=array( 'backend' => 'Amazon S3', 'configuration' => array( 'key' => 'Key', 'secret' => '*Secret', 'bucket' => 'Bucket')); - $backends['OC_Filestorage_Dropbox']=array( + $backends['\OC\Files\Storage\Dropbox']=array( 'backend' => 'Dropbox', 'configuration' => array( 'configured' => '#configured', @@ -61,7 +61,7 @@ class OC_Mount_Config { 'token_secret' => '#token_secret'), 'custom' => 'dropbox'); - if(OC_Mount_Config::checkphpftp()) $backends['OC_Filestorage_FTP']=array( + if(OC_Mount_Config::checkphpftp()) $backends['\OC\Files\Storage\FTP']=array( 'backend' => 'FTP', 'configuration' => array( 'host' => 'URL', @@ -70,15 +70,15 @@ class OC_Mount_Config { 'root' => '&Root', 'secure' => '!Secure ftps://')); - $backends['OC_Filestorage_Google']=array( + $backends['\OC\Files\Storage\Google']=array( 'backend' => 'Google Drive', 'configuration' => array( 'configured' => '#configured', 'token' => '#token', 'token_secret' => '#token secret'), 'custom' => 'google'); - - $backends['OC_Filestorage_SWIFT']=array( + + $backends['\OC\Files\Storage\SWIFT']=array( 'backend' => 'OpenStack Swift', 'configuration' => array( 'host' => 'URL', @@ -86,8 +86,8 @@ class OC_Mount_Config { 'token' => '*Token', 'root' => '&Root', 'secure' => '!Secure ftps://')); - - if(OC_Mount_Config::checksmbclient()) $backends['OC_Filestorage_SMB']=array( + + if(OC_Mount_Config::checksmbclient()) $backends['\OC\Files\Storage\SMB']=array( 'backend' => 'SMB / CIFS', 'configuration' => array( 'host' => 'URL', @@ -95,8 +95,8 @@ class OC_Mount_Config { 'password' => '*Password', 'share' => 'Share', 'root' => '&Root')); - - $backends['OC_Filestorage_DAV']=array( + + $backends['\OC\Files\Storage\DAV']=array( 'backend' => 'ownCloud / WebDAV', 'configuration' => array( 'host' => 'URL', @@ -120,6 +120,10 @@ class OC_Mount_Config { if (isset($mountPoints[self::MOUNT_TYPE_GROUP])) { foreach ($mountPoints[self::MOUNT_TYPE_GROUP] as $group => $mounts) { foreach ($mounts as $mountPoint => $mount) { + // Update old classes to new namespace + if (strpos($mount['class'], 'OC_Filestorage_') !== false) { + $mount['class'] = '\OC\Files\Storage\\'.substr($mount['class'], 15); + } // Remove '/$user/files/' from mount point $mountPoint = substr($mountPoint, 13); // Merge the mount point into the current mount points @@ -139,6 +143,10 @@ class OC_Mount_Config { if (isset($mountPoints[self::MOUNT_TYPE_USER])) { foreach ($mountPoints[self::MOUNT_TYPE_USER] as $user => $mounts) { foreach ($mounts as $mountPoint => $mount) { + // Update old classes to new namespace + if (strpos($mount['class'], 'OC_Filestorage_') !== false) { + $mount['class'] = '\OC\Files\Storage\\'.substr($mount['class'], 15); + } // Remove '/$user/files/' from mount point $mountPoint = substr($mountPoint, 13); // Merge the mount point into the current mount points @@ -169,6 +177,10 @@ class OC_Mount_Config { $personal = array(); if (isset($mountPoints[self::MOUNT_TYPE_USER][$uid])) { foreach ($mountPoints[self::MOUNT_TYPE_USER][$uid] as $mountPoint => $mount) { + // Update old classes to new namespace + if (strpos($mount['class'], 'OC_Filestorage_') !== false) { + $mount['class'] = '\OC\Files\Storage\\'.substr($mount['class'], 15); + } // Remove '/uid/files/' from mount point $personal[substr($mountPoint, strlen($uid) + 8)] = array('class' => $mount['class'], 'backend' => $backends[$mount['class']]['backend'], @@ -179,22 +191,6 @@ class OC_Mount_Config { } /** - * Add directory for mount point to the filesystem - * @param OC_Fileview instance $view - * @param string path to mount point - */ - private static function addMountPointDirectory($view, $path) { - $dir = ''; - foreach ( explode('/', $path) as $pathPart) { - $dir = $dir.'/'.$pathPart; - if ( !$view->file_exists($dir)) { - $view->mkdir($dir); - } - } - } - - - /** * Add a mount point to the filesystem * @param string Mount point * @param string Backend class @@ -213,36 +209,11 @@ class OC_Mount_Config { if ($isPersonal) { // Verify that the mount point applies for the current user // Prevent non-admin users from mounting local storage - if ($applicable != OCP\User::getUser() || $class == 'OC_Filestorage_Local') { + if ($applicable != OCP\User::getUser() || $class == '\OC\Files\Storage\Local') { return false; } - $view = new OC_FilesystemView('/'.OCP\User::getUser().'/files'); - self::addMountPointDirectory($view, ltrim($mountPoint, '/')); $mountPoint = '/'.$applicable.'/files/'.ltrim($mountPoint, '/'); } else { - $view = new OC_FilesystemView('/'); - switch ($mountType) { - case 'user': - if ($applicable == "all") { - $users = OCP\User::getUsers(); - foreach ( $users as $user ) { - $path = $user.'/files/'.ltrim($mountPoint, '/'); - self::addMountPointDirectory($view, $path); - } - } else { - $path = $applicable.'/files/'.ltrim($mountPoint, '/'); - self::addMountPointDirectory($view, $path); - } - break; - case 'group' : - $groupMembers = OC_Group::usersInGroups(array($applicable)); - foreach ( $groupMembers as $user ) { - $path = $user.'/files/'.ltrim($mountPoint, '/'); - self::addMountPointDirectory($view, $path); - } - break; - } - $mountPoint = '/$user/files/'.ltrim($mountPoint, '/'); } $mount = array($applicable => array($mountPoint => array('class' => $class, 'options' => $classOptions))); diff --git a/apps/files_external/lib/dropbox.php b/apps/files_external/lib/dropbox.php index 33ca14cab15..11644e4a2c8 100755 --- a/apps/files_external/lib/dropbox.php +++ b/apps/files_external/lib/dropbox.php @@ -20,12 +20,15 @@ * License along with this library. If not, see <http://www.gnu.org/licenses/>. */ +namespace OC\Files\Storage; + require_once 'Dropbox/autoload.php'; -class OC_Filestorage_Dropbox extends OC_Filestorage_Common { +class Dropbox extends \OC\Files\Storage\Common { private $dropbox; private $root; + private $id; private $metaData = array(); private static $tempFiles = array(); @@ -37,13 +40,14 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { && isset($params['token']) && isset($params['token_secret']) ) { + $this->id = 'dropbox::'.$params['app_key'] . $params['token']. '/' . $params['root']; $this->root=isset($params['root'])?$params['root']:''; - $oauth = new Dropbox_OAuth_Curl($params['app_key'], $params['app_secret']); + $oauth = new \Dropbox_OAuth_Curl($params['app_key'], $params['app_secret']); $oauth->setToken($params['token'], $params['token_secret']); - $this->dropbox = new Dropbox_API($oauth, 'dropbox'); + $this->dropbox = new \Dropbox_API($oauth, 'dropbox'); $this->mkdir(''); } else { - throw new Exception('Creating OC_Filestorage_Dropbox storage failed'); + throw new \Exception('Creating \OC\Files\Storage\Dropbox storage failed'); } } @@ -55,8 +59,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { if ($list) { try { $response = $this->dropbox->getMetaData($path); - } catch (Exception $exception) { - OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR); + } catch (\Exception $exception) { + \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR); return false; } if ($response && isset($response['contents'])) { @@ -76,21 +80,25 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { $response = $this->dropbox->getMetaData($path, 'false'); $this->metaData[$path] = $response; return $response; - } catch (Exception $exception) { - OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR); + } catch (\Exception $exception) { + \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR); return false; } } } } + public function getId(){ + return $this->id; + } + public function mkdir($path) { $path = $this->root.$path; try { $this->dropbox->createFolder($path); return true; - } catch (Exception $exception) { - OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR); + } catch (\Exception $exception) { + \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR); return false; } } @@ -106,7 +114,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { foreach ($contents as $file) { $files[] = basename($file['path']); } - OC_FakeDirStream::$dirs['dropbox'.$path] = $files; + \OC\Files\Stream\Dir::register('dropbox'.$path, $files); return opendir('fakedir://dropbox'.$path); } return false; @@ -118,7 +126,6 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { $stat['size'] = $metaData['bytes']; $stat['atime'] = time(); $stat['mtime'] = (isset($metaData['modified'])) ? strtotime($metaData['modified']) : time(); - $stat['ctime'] = $stat['mtime']; return $stat; } return false; @@ -163,8 +170,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { try { $this->dropbox->delete($path); return true; - } catch (Exception $exception) { - OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR); + } catch (\Exception $exception) { + \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR); return false; } } @@ -175,8 +182,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { try { $this->dropbox->move($path1, $path2); return true; - } catch (Exception $exception) { - OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR); + } catch (\Exception $exception) { + \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR); return false; } } @@ -187,8 +194,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { try { $this->dropbox->copy($path1, $path2); return true; - } catch (Exception $exception) { - OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR); + } catch (\Exception $exception) { + \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR); return false; } } @@ -198,13 +205,13 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { switch ($mode) { case 'r': case 'rb': - $tmpFile = OC_Helper::tmpFile(); + $tmpFile = \OC_Helper::tmpFile(); try { $data = $this->dropbox->getFile($path); file_put_contents($tmpFile, $data); return fopen($tmpFile, 'r'); - } catch (Exception $exception) { - OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR); + } catch (\Exception $exception) { + \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR); return false; } case 'w': @@ -224,8 +231,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { } else { $ext = ''; } - $tmpFile = OC_Helper::tmpFile($ext); - OC_CloseStreamWrapper::$callBacks[$tmpFile] = array($this, 'writeBack'); + $tmpFile = \OC_Helper::tmpFile($ext); + \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack')); if ($this->file_exists($path)) { $source = $this->fopen($path, 'r'); file_put_contents($tmpFile, $source); @@ -242,8 +249,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { try { $this->dropbox->putFile(self::$tempFiles[$tmpFile], $handle); unlink($tmpFile); - } catch (Exception $exception) { - OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR); + } catch (\Exception $exception) { + \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR); } } } @@ -264,8 +271,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { try { $info = $this->dropbox->getAccountInfo(); return $info['quota_info']['quota'] - $info['quota_info']['normal']; - } catch (Exception $exception) { - OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR); + } catch (\Exception $exception) { + \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR); return false; } } diff --git a/apps/files_external/lib/ftp.php b/apps/files_external/lib/ftp.php index e796ae446bf..9a27b63323a 100644 --- a/apps/files_external/lib/ftp.php +++ b/apps/files_external/lib/ftp.php @@ -6,7 +6,9 @@ * See the COPYING-README file. */ -class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{ +namespace OC\Files\Storage; + +class FTP extends \OC\Files\Storage\StreamWrapper{ private $password; private $user; private $host; @@ -38,9 +40,13 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{ } } + public function getId(){ + return 'ftp::' . $this->user . '@' . $this->host . '/' . $this->root; + } + /** * construct the ftp url - * @param string path + * @param string $path * @return string */ public function constructUrl($path) { @@ -51,7 +57,8 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{ $url.='://'.$this->user.':'.$this->password.'@'.$this->host.$this->root.$path; return $url; } - public function fopen($path, $mode) { + public function fopen($path,$mode) { + $this->init(); switch($mode) { case 'r': case 'rb': @@ -61,7 +68,7 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{ case 'ab': //these are supported by the wrapper $context = stream_context_create(array('ftp' => array('overwrite' => true))); - return fopen($this->constructUrl($path), $mode, false, $context); + return fopen($this->constructUrl($path),$mode, false,$context); case 'r+': case 'w+': case 'wb+': @@ -77,16 +84,18 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{ $ext=''; } $tmpFile=OCP\Files::tmpFile($ext); - OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack'); + \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack')); if ($this->file_exists($path)) { $this->getFile($path, $tmpFile); } self::$tempFiles[$tmpFile]=$path; - return fopen('close://'.$tmpFile, $mode); + return fopen('close://'.$tmpFile,$mode); } + return false; } public function writeBack($tmpFile) { + $this->init(); if (isset(self::$tempFiles[$tmpFile])) { $this->uploadFile($tmpFile, self::$tempFiles[$tmpFile]); unlink($tmpFile); diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php index c836a5a07c0..7396c7e3f27 100644 --- a/apps/files_external/lib/google.php +++ b/apps/files_external/lib/google.php @@ -20,14 +20,17 @@ * License along with this library. If not, see <http://www.gnu.org/licenses/>. */ +namespace OC\Files\Storage; + require_once 'Google/common.inc.php'; -class OC_Filestorage_Google extends OC_Filestorage_Common { +class Google extends \OC\Files\Storage\Common { private $consumer; private $oauth_token; private $sig_method; private $entries; + private $id; private static $tempFiles = array(); @@ -38,12 +41,13 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { ) { $consumer_key = isset($params['consumer_key']) ? $params['consumer_key'] : 'anonymous'; $consumer_secret = isset($params['consumer_secret']) ? $params['consumer_secret'] : 'anonymous'; - $this->consumer = new OAuthConsumer($consumer_key, $consumer_secret); - $this->oauth_token = new OAuthToken($params['token'], $params['token_secret']); - $this->sig_method = new OAuthSignatureMethod_HMAC_SHA1(); + $this->id = 'google::' . $params['token']; + $this->consumer = new \OAuthConsumer($consumer_key, $consumer_secret); + $this->oauth_token = new \OAuthToken($params['token'], $params['token_secret']); + $this->sig_method = new \OAuthSignatureMethod_HMAC_SHA1(); $this->entries = array(); } else { - throw new Exception('Creating OC_Filestorage_Google storage failed'); + throw new \Exception('Creating \OC\Files\Storage\Google storage failed'); } } @@ -68,7 +72,7 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { $tempStr .= '&' . urlencode($key) . '=' . urlencode($value); } $uri = preg_replace('/&/', '?', $tempStr, 1); - $request = OAuthRequest::from_consumer_and_token($this->consumer, + $request = \OAuthRequest::from_consumer_and_token($this->consumer, $this->oauth_token, $httpMethod, $uri, @@ -110,7 +114,7 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); } if ($isDownload) { - $tmpFile = OC_Helper::tmpFile(); + $tmpFile = \OC_Helper::tmpFile(); $handle = fopen($tmpFile, 'w'); curl_setopt($curl, CURLOPT_FILE, $handle); } @@ -139,7 +143,7 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { private function getFeed($feedUri, $httpMethod, $postData = null) { $result = $this->sendRequest($feedUri, $httpMethod, $postData); if ($result) { - $dom = new DOMDocument(); + $dom = new \DOMDocument(); $dom->loadXML($result); return $dom; } @@ -194,6 +198,9 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { } } + public function getId(){ + return $this->id; + } public function mkdir($path) { $collection = dirname($path); @@ -266,7 +273,7 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { $this->entries[$name] = $entry; } } - OC_FakeDirStream::$dirs['google'.$path] = $files; + \OC\Files\Stream\Dir::register('google'.$path, $files); return opendir('fakedir://google'.$path); } @@ -287,7 +294,6 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { //$stat['atime'] = strtotime($entry->getElementsByTagNameNS('http://schemas.google.com/g/2005', // 'lastViewed')->item(0)->nodeValue); $stat['mtime'] = strtotime($entry->getElementsByTagName('updated')->item(0)->nodeValue); - $stat['ctime'] = strtotime($entry->getElementsByTagName('published')->item(0)->nodeValue); } } if (isset($stat)) { @@ -443,8 +449,8 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { } else { $ext = ''; } - $tmpFile = OC_Helper::tmpFile($ext); - OC_CloseStreamWrapper::$callBacks[$tmpFile] = array($this, 'writeBack'); + $tmpFile = \OC_Helper::tmpFile($ext); + \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack')); if ($this->file_exists($path)) { $source = $this->fopen($path, 'r'); file_put_contents($tmpFile, $source); @@ -482,7 +488,7 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { } if (isset($uploadUri) && $handle = fopen($path, 'r')) { $uploadUri .= '?convert=false'; - $mimetype = OC_Helper::getMimeType($path); + $mimetype = \OC_Helper::getMimeType($path); $size = filesize($path); $headers = array('X-Upload-Content-Type: ' => $mimetype, 'X-Upload-Content-Length: ' => $size); $postData = '<?xml version="1.0" encoding="UTF-8"?>'; @@ -590,4 +596,4 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { } -}
\ No newline at end of file +} diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php index 071a9cd5f95..96778b0b2e1 100644 --- a/apps/files_external/lib/smb.php +++ b/apps/files_external/lib/smb.php @@ -6,9 +6,11 @@ * See the COPYING-README file. */ +namespace OC\Files\Storage; + require_once 'smb4php/smb.php'; -class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{ +class SMB extends \OC\Files\Storage\StreamWrapper{ private $password; private $user; private $host; @@ -30,14 +32,13 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{ if ( ! $this->share || $this->share[0]!='/') { $this->share='/'.$this->share; } - if (substr($this->share, -1, 1)=='/') { - $this->share=substr($this->share, 0, -1); + if(substr($this->share, -1, 1)=='/') { + $this->share = substr($this->share,0,-1); } + } - //create the root folder if necesary - if ( ! $this->is_dir('')) { - $this->mkdir(''); - } + public function getId(){ + return 'smb::' . $this->user . '@' . $this->host . '/' . $this->share . '/' . $this->root; } public function constructUrl($path) { @@ -65,11 +66,13 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{ /** * check if a file or folder has been updated since $time + * @param string $path * @param int $time * @return bool */ - public function hasUpdated($path, $time) { - if ( ! $path and $this->root=='/') { + public function hasUpdated($path,$time) { + $this->init(); + if(!$path and $this->root=='/') { // mtime doesn't work for shares, but giving the nature of the backend, // doing a full update is still just fast enough return true; diff --git a/apps/files_external/lib/streamwrapper.php b/apps/files_external/lib/streamwrapper.php index a386e333995..7c3ddcf8a2c 100644 --- a/apps/files_external/lib/streamwrapper.php +++ b/apps/files_external/lib/streamwrapper.php @@ -6,16 +6,33 @@ * See the COPYING-README file. */ +namespace OC\Files\Storage; + +abstract class StreamWrapper extends \OC\Files\Storage\Common{ + private $ready = false; + + protected function init(){ + if($this->ready){ + return; + } + $this->ready = true; + + //create the root folder if necesary + if(!$this->is_dir('')) { + $this->mkdir(''); + } + } -abstract class OC_FileStorage_StreamWrapper extends OC_Filestorage_Common{ abstract public function constructUrl($path); public function mkdir($path) { + $this->init(); return mkdir($this->constructUrl($path)); } public function rmdir($path) { - if ($this->file_exists($path)) { + $this->init(); + if($this->file_exists($path)) { $succes = rmdir($this->constructUrl($path)); clearstatcache(); return $succes; @@ -25,10 +42,12 @@ abstract class OC_FileStorage_StreamWrapper extends OC_Filestorage_Common{ } public function opendir($path) { + $this->init(); return opendir($this->constructUrl($path)); } public function filetype($path) { + $this->init(); return filetype($this->constructUrl($path)); } @@ -41,46 +60,54 @@ abstract class OC_FileStorage_StreamWrapper extends OC_Filestorage_Common{ } public function file_exists($path) { + $this->init(); return file_exists($this->constructUrl($path)); } public function unlink($path) { + $this->init(); $succes = unlink($this->constructUrl($path)); clearstatcache(); return $succes; } - public function fopen($path, $mode) { - return fopen($this->constructUrl($path), $mode); + public function fopen($path,$mode) { + $this->init(); + return fopen($this->constructUrl($path),$mode); } public function free_space($path) { return 0; } - public function touch($path, $mtime = null) { - if (is_null($mtime)) { - $fh = $this->fopen($path, 'a'); - fwrite($fh, ''); + public function touch($path,$mtime=null) { + $this->init(); + if(is_null($mtime)) { + $fh = $this->fopen($path,'a'); + fwrite($fh,''); fclose($fh); } else { return false;//not supported } } - public function getFile($path, $target) { - return copy($this->constructUrl($path), $target); + public function getFile($path,$target) { + $this->init(); + return copy($this->constructUrl($path),$target); } - public function uploadFile($path, $target) { - return copy($path, $this->constructUrl($target)); + public function uploadFile($path,$target) { + $this->init(); + return copy($path,$this->constructUrl($target)); } - public function rename($path1, $path2) { - return rename($this->constructUrl($path1), $this->constructUrl($path2)); + public function rename($path1,$path2) { + $this->init(); + return rename($this->constructUrl($path1),$this->constructUrl($path2)); } public function stat($path) { + $this->init(); return stat($this->constructUrl($path)); } diff --git a/apps/files_external/lib/swift.php b/apps/files_external/lib/swift.php index a071dfdbb03..cbf2007052b 100644 --- a/apps/files_external/lib/swift.php +++ b/apps/files_external/lib/swift.php @@ -6,24 +6,28 @@ * See the COPYING-README file. */ +namespace OC\Files\Storage; + require_once 'php-cloudfiles/cloudfiles.php'; -class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ +class SWIFT extends \OC\Files\Storage\Common{ + private $id; private $host; private $root; private $user; private $token; private $secure; + private $ready = false; /** - * @var CF_Authentication auth + * @var \CF_Authentication auth */ private $auth; /** - * @var CF_Connection conn + * @var \CF_Connection conn */ private $conn; /** - * @var CF_Container rootContainer + * @var \CF_Container rootContainer */ private $rootContainer; @@ -35,18 +39,18 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ /** * translate directory path to container name - * @param string path + * @param string $path * @return string */ private function getContainerName($path) { - $path=trim(trim($this->root, '/')."/".$path, '/.'); + $path=trim(trim($this->root, '/') . "/".$path, '/.'); return str_replace('/', '\\', $path); } /** * get container by path - * @param string path - * @return CF_Container + * @param string $path + * @return \CF_Container */ private function getContainer($path) { if ($path=='' or $path=='/') { @@ -59,15 +63,15 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ $container=$this->conn->get_container($this->getContainerName($path)); $this->containers[$path]=$container; return $container; - } catch(NoSuchContainerException $e) { + } catch(\NoSuchContainerException $e) { return null; } } /** * create container - * @param string path - * @return CF_Container + * @param string $path + * @return \CF_Container */ private function createContainer($path) { if ($path=='' or $path=='/' or $path=='.') { @@ -89,8 +93,8 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ /** * get object by path - * @param string path - * @return CF_Object + * @param string $path + * @return \CF_Object */ private function getObject($path) { if (isset($this->objects[$path])) { @@ -107,7 +111,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ $obj=$container->get_object(basename($path)); $this->objects[$path]=$obj; return $obj; - } catch(NoSuchObjectException $e) { + } catch(\NoSuchObjectException $e) { return null; } } @@ -132,8 +136,8 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ /** * create object - * @param string path - * @return CF_Object + * @param string $path + * @return \CF_Object */ private function createObject($path) { $container=$this->getContainer(dirname($path)); @@ -154,7 +158,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ /** * check if container for path exists - * @param string path + * @param string $path * @return bool */ private function containerExists($path) { @@ -163,15 +167,15 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ /** * get the list of emulated sub containers - * @param CF_Container container + * @param \CF_Container $container * @return array */ private function getSubContainers($container) { - $tmpFile=OCP\Files::tmpFile(); + $tmpFile=\OCP\Files::tmpFile(); $obj=$this->getSubContainerFile($container); try { $obj->save_to_filename($tmpFile); - } catch(Exception $e) { + } catch(\Exception $e) { return array(); } $obj->save_to_filename($tmpFile); @@ -185,15 +189,15 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ /** * add an emulated sub container - * @param CF_Container container - * @param string name + * @param \CF_Container $container + * @param string $name * @return bool */ private function addSubContainer($container, $name) { if ( ! $name) { return false; } - $tmpFile=OCP\Files::tmpFile(); + $tmpFile=\OCP\Files::tmpFile(); $obj=$this->getSubContainerFile($container); try { $obj->save_to_filename($tmpFile); @@ -201,16 +205,15 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ foreach ($containers as &$sub) { $sub=trim($sub); } - if (array_search($name, $containers)!==false) { + if(array_search($name, $containers) !== false) { unlink($tmpFile); return false; } else { $fh=fopen($tmpFile, 'a'); - fwrite($fh, $name."\n"); + fwrite($fh,$name . "\n"); } - } catch(Exception $e) { - $containers=array(); - file_put_contents($tmpFile, $name."\n"); + } catch(\Exception $e) { + file_put_contents($tmpFile, $name . "\n"); } $obj->load_from_filename($tmpFile); @@ -220,20 +223,20 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ /** * remove an emulated sub container - * @param CF_Container container - * @param string name + * @param \CF_Container $container + * @param string $name * @return bool */ private function removeSubContainer($container, $name) { if ( ! $name) { return false; } - $tmpFile=OCP\Files::tmpFile(); + $tmpFile=\OCP\Files::tmpFile(); $obj=$this->getSubContainerFile($container); try { $obj->save_to_filename($tmpFile); $containers=file($tmpFile); - } catch (Exception $e) { + } catch (\Exception $e) { return false; } foreach ($containers as &$sub) { @@ -255,8 +258,8 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ /** * ensure a subcontainer file exists and return it's object - * @param CF_Container container - * @return CF_Object + * @param \CF_Container $container + * @return \CF_Object */ private function getSubContainerFile($container) { try { @@ -283,10 +286,19 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ if ( ! $this->root || $this->root[0]!='/') { $this->root='/'.$this->root; } - $this->auth = new CF_Authentication($this->user, $this->token, null, $this->host); + + } + + private function init(){ + if($this->ready){ + return; + } + $this->ready = true; + + $this->auth = new \CF_Authentication($this->user, $this->token, null, $this->host); $this->auth->authenticate(); - $this->conn = new CF_Connection($this->auth); + $this->conn = new \CF_Connection($this->auth); if ( ! $this->containerExists('/')) { $this->rootContainer=$this->createContainer('/'); @@ -295,8 +307,13 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } } + public function getId(){ + return $this->id; + } + public function mkdir($path) { + $this->init(); if ($this->containerExists($path)) { return false; } else { @@ -306,7 +323,8 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } public function rmdir($path) { - if ( ! $this->containerExists($path)) { + $this->init(); + if (!$this->containerExists($path)) { return false; } else { $this->emptyContainer($path); @@ -343,6 +361,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } public function opendir($path) { + $this->init(); $container=$this->getContainer($path); $files=$this->getObjects($container); $i=array_search(self::SUBCONTAINER_FILE, $files); @@ -352,11 +371,12 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ $subContainers=$this->getSubContainers($container); $files=array_merge($files, $subContainers); $id=$this->getContainerName($path); - OC_FakeDirStream::$dirs[$id]=$files; + \OC\Files\Stream\Dir::register($id, $files); return opendir('fakedir://'.$id); } public function filetype($path) { + $this->init(); if ($this->containerExists($path)) { return 'dir'; } else { @@ -373,6 +393,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } public function file_exists($path) { + $this->init(); if ($this->is_dir($path)) { return true; } else { @@ -381,6 +402,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } public function file_get_contents($path) { + $this->init(); $obj=$this->getObject($path); if (is_null($obj)) { return false; @@ -389,6 +411,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } public function file_put_contents($path, $content) { + $this->init(); $obj=$this->getObject($path); if (is_null($obj)) { $container=$this->getContainer(dirname($path)); @@ -402,6 +425,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } public function unlink($path) { + $this->init(); if ($this->containerExists($path)) { return $this->rmdir($path); } @@ -415,6 +439,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } public function fopen($path, $mode) { + $this->init(); switch($mode) { case 'r': case 'rb': @@ -440,7 +465,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ case 'c': case 'c+': $tmpFile=$this->getTmpFile($path); - OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack'); + \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack')); self::$tempFiles[$tmpFile]=$path; return fopen('close://'.$tmpFile, $mode); } @@ -458,6 +483,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } public function touch($path, $mtime=null) { + $this->init(); $obj=$this->getObject($path); if (is_null($obj)) { return false; @@ -472,6 +498,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } public function rename($path1, $path2) { + $this->init(); $sourceContainer=$this->getContainer(dirname($path1)); $targetContainer=$this->getContainer(dirname($path2)); $result=$sourceContainer->move_object_to(basename($path1), $targetContainer, basename($path2)); @@ -484,6 +511,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } public function copy($path1, $path2) { + $this->init(); $sourceContainer=$this->getContainer(dirname($path1)); $targetContainer=$this->getContainer(dirname($path2)); $result=$sourceContainer->copy_object_to(basename($path1), $targetContainer, basename($path2)); @@ -495,6 +523,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } public function stat($path) { + $this->init(); $container=$this->getContainer($path); if ( ! is_null($container)) { return array( @@ -523,17 +552,19 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } private function getTmpFile($path) { + $this->init(); $obj=$this->getObject($path); if ( ! is_null($obj)) { - $tmpFile=OCP\Files::tmpFile(); + $tmpFile=\OCP\Files::tmpFile(); $obj->save_to_filename($tmpFile); return $tmpFile; } else { - return OCP\Files::tmpFile(); + return \OCP\Files::tmpFile(); } } private function fromTmpFile($tmpFile, $path) { + $this->init(); $obj=$this->getObject($path); if (is_null($obj)) { $obj=$this->createObject($path); @@ -544,7 +575,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ /** * remove custom mtime metadata - * @param CF_Object obj + * @param \CF_Object $obj */ private function resetMTime($obj) { if (isset($obj->metadata['Mtime'])) { diff --git a/apps/files_external/lib/webdav.php b/apps/files_external/lib/webdav.php index 920aefc12de..2a953ac63f4 100644 --- a/apps/files_external/lib/webdav.php +++ b/apps/files_external/lib/webdav.php @@ -6,14 +6,17 @@ * See the COPYING-README file. */ -class OC_FileStorage_DAV extends OC_Filestorage_Common{ +namespace OC\Files\Storage; + +class DAV extends \OC\Files\Storage\Common{ private $password; private $user; private $host; private $secure; private $root; + private $ready; /** - * @var Sabre_DAV_Client + * @var \Sabre_DAV_Client */ private $client; @@ -43,6 +46,13 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ if (substr($this->root, -1, 1)!='/') { $this->root.='/'; } + } + + private function init(){ + if($this->ready){ + return; + } + $this->ready = true; $settings = array( 'baseUri' => $this->createBaseUri(), @@ -50,7 +60,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ 'password' => $this->password, ); - $this->client = new Sabre_DAV_Client($settings); + $this->client = new \Sabre_DAV_Client($settings); $caview = \OCP\Files::getStorage('files_external'); if ($caview) { @@ -63,6 +73,10 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ $this->mkdir(''); } + public function getId(){ + return 'webdav::' . $this->user . '@' . $this->host . '/' . $this->root; + } + private function createBaseUri() { $baseUri='http'; if ($this->secure) { @@ -73,40 +87,45 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ } public function mkdir($path) { + $this->init(); $path=$this->cleanPath($path); return $this->simpleResponse('MKCOL', $path, null, 201); } public function rmdir($path) { + $this->init(); $path=$this->cleanPath($path); return $this->simpleResponse('DELETE', $path, null, 204); } public function opendir($path) { + $this->init(); $path=$this->cleanPath($path); try { $response=$this->client->propfind($path, array(), 1); $id=md5('webdav'.$this->root.$path); - OC_FakeDirStream::$dirs[$id]=array(); + $content = array(); $files=array_keys($response); array_shift($files);//the first entry is the current directory foreach ($files as $file) { $file = urldecode(basename($file)); - OC_FakeDirStream::$dirs[$id][]=$file; + $content[]=$file; } + \OC\Files\Stream\Dir::register($id, $content); return opendir('fakedir://'.$id); - } catch(Exception $e) { + } catch(\Exception $e) { return false; } } public function filetype($path) { + $this->init(); $path=$this->cleanPath($path); try { $response=$this->client->propfind($path, array('{DAV:}resourcetype')); $responseType=$response["{DAV:}resourcetype"]->resourceType; return (count($responseType)>0 and $responseType[0]=="{DAV:}collection")?'dir':'file'; - } catch(Exception $e) { + } catch(\Exception $e) { error_log($e->getMessage()); \OCP\Util::writeLog("webdav client", \OCP\Util::sanitizeHTML($e->getMessage()), \OCP\Util::ERROR); return false; @@ -122,20 +141,23 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ } public function file_exists($path) { + $this->init(); $path=$this->cleanPath($path); try { $this->client->propfind($path, array('{DAV:}resourcetype')); return true;//no 404 exception - } catch(Exception $e) { + } catch(\Exception $e) { return false; } } public function unlink($path) { - return $this->simpleResponse('DELETE', $path, null, 204); + $this->init(); + return $this->simpleResponse('DELETE', $path, null ,204); } - public function fopen($path, $mode) { + public function fopen($path,$mode) { + $this->init(); $path=$this->cleanPath($path); switch($mode) { case 'r': @@ -172,9 +194,9 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ } else { $ext=''; } - $tmpFile=OCP\Files::tmpFile($ext); - OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack'); - if ($this->file_exists($path)) { + $tmpFile = \OCP\Files::tmpFile($ext); + \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack')); + if($this->file_exists($path)) { $this->getFile($path, $tmpFile); } self::$tempFiles[$tmpFile]=$path; @@ -190,6 +212,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ } public function free_space($path) { + $this->init(); $path=$this->cleanPath($path); try { $response=$this->client->propfind($path, array('{DAV:}quota-available-bytes')); @@ -198,12 +221,13 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ } else { return 0; } - } catch(Exception $e) { + } catch(\Exception $e) { return 0; } } public function touch($path, $mtime=null) { + $this->init(); if (is_null($mtime)) { $mtime=time(); } @@ -211,12 +235,14 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ $this->client->proppatch($path, array('{DAV:}lastmodified' => $mtime)); } - public function getFile($path, $target) { - $source=$this->fopen($path, 'r'); - file_put_contents($target, $source); + public function getFile($path,$target) { + $this->init(); + $source=$this->fopen($path,'r'); + file_put_contents($target,$source); } - public function uploadFile($path, $target) { + public function uploadFile($path,$target) { + $this->init(); $source=fopen($path, 'r'); $curl = curl_init(); @@ -230,47 +256,46 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ curl_close ($curl); } - public function rename($path1, $path2) { + public function rename($path1,$path2) { + $this->init(); $path1=$this->cleanPath($path1); $path2=$this->root.$this->cleanPath($path2); try { $this->client->request('MOVE', $path1, null, array('Destination'=>$path2)); return true; - } catch(Exception $e) { - echo $e; - echo 'fail'; + } catch(\Exception $e) { return false; } } - public function copy($path1, $path2) { + public function copy($path1,$path2) { + $this->init(); $path1=$this->cleanPath($path1); $path2=$this->root.$this->cleanPath($path2); try { $this->client->request('COPY', $path1, null, array('Destination'=>$path2)); return true; - } catch(Exception $e) { - echo $e; - echo 'fail'; + } catch(\Exception $e) { return false; } } public function stat($path) { + $this->init(); $path=$this->cleanPath($path); try { $response=$this->client->propfind($path, array('{DAV:}getlastmodified', '{DAV:}getcontentlength')); return array( 'mtime'=>strtotime($response['{DAV:}getlastmodified']), 'size'=>(int)isset($response['{DAV:}getcontentlength']) ? $response['{DAV:}getcontentlength'] : 0, - 'ctime'=>-1, ); - } catch(Exception $e) { + } catch(\Exception $e) { return array(); } } public function getMimeType($path) { + $this->init(); $path=$this->cleanPath($path); try { $response=$this->client->propfind($path, array('{DAV:}getcontenttype', '{DAV:}resourcetype')); @@ -283,7 +308,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ } else { return false; } - } catch(Exception $e) { + } catch(\Exception $e) { return false; } } @@ -296,12 +321,12 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ } } - private function simpleResponse($method, $path, $body, $expected) { + private function simpleResponse($method,$path,$body,$expected) { $path=$this->cleanPath($path); try { $response=$this->client->request($method, $path, $body); return $response['statusCode']==$expected; - } catch(Exception $e) { + } catch(\Exception $e) { return false; } } diff --git a/apps/files_external/personal.php b/apps/files_external/personal.php index 4215b28787e..268d1880232 100755 --- a/apps/files_external/personal.php +++ b/apps/files_external/personal.php @@ -24,7 +24,7 @@ OCP\Util::addScript('files_external', 'settings'); OCP\Util::addStyle('files_external', 'settings'); $backends = OC_Mount_Config::getBackends(); // Remove local storage -unset($backends['OC_Filestorage_Local']); +unset($backends['\OC\Files\Storage\Local']); $tmpl = new OCP\Template('files_external', 'settings'); $tmpl->assign('isAdminPage', false, false); $tmpl->assign('mounts', OC_Mount_Config::getPersonalMountPoints()); diff --git a/apps/files_external/tests/amazons3.php b/apps/files_external/tests/amazons3.php index 39f96fe8e55..6b3a942b5ba 100644 --- a/apps/files_external/tests/amazons3.php +++ b/apps/files_external/tests/amazons3.php @@ -20,7 +20,9 @@ * License along with this library. If not, see <http://www.gnu.org/licenses/>. */ -class Test_Filestorage_AmazonS3 extends Test_FileStorage { +namespace Test\Files\Storage; + +class AmazonS3 extends Storage { private $config; private $id; @@ -32,12 +34,12 @@ class Test_Filestorage_AmazonS3 extends Test_FileStorage { $this->markTestSkipped('AmazonS3 backend not configured'); } $this->config['amazons3']['bucket'] = $id; // Make sure we have a new empty bucket to work in - $this->instance = new OC_Filestorage_AmazonS3($this->config['amazons3']); + $this->instance = new \OC\Files\Storage\AmazonS3($this->config['amazons3']); } public function tearDown() { if ($this->instance) { - $s3 = new AmazonS3(array('key' => $this->config['amazons3']['key'], + $s3 = new \AmazonS3(array('key' => $this->config['amazons3']['key'], 'secret' => $this->config['amazons3']['secret'])); if ($s3->delete_all_objects($this->id)) { $s3->delete_bucket($this->id); diff --git a/apps/files_external/tests/config.php b/apps/files_external/tests/config.php index ff16b1c1d8a..65127175ad7 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'=>false, + 'run'=>true, 'host'=>'localhost', 'user'=>'test', 'password'=>'test', @@ -30,7 +30,7 @@ return array( 'root'=>'/', ), 'smb'=>array( - 'run'=>false, + 'run'=>true, 'user'=>'test', 'password'=>'test', 'host'=>'localhost', diff --git a/apps/files_external/tests/dropbox.php b/apps/files_external/tests/dropbox.php index 304cb3ca38c..e4e598b06b0 100644 --- a/apps/files_external/tests/dropbox.php +++ b/apps/files_external/tests/dropbox.php @@ -6,7 +6,9 @@ * See the COPYING-README file. */ -class Test_Filestorage_Dropbox extends Test_FileStorage { +namespace Test\Files\Storage; + +class Dropbox extends Storage { private $config; public function setUp() { @@ -16,7 +18,7 @@ class Test_Filestorage_Dropbox extends Test_FileStorage { $this->markTestSkipped('Dropbox backend not configured'); } $this->config['dropbox']['root'] .= '/' . $id; //make sure we have an new empty folder to work in - $this->instance = new OC_Filestorage_Dropbox($this->config['dropbox']); + $this->instance = new \OC\Files\Storage\Dropbox($this->config['dropbox']); } public function tearDown() { diff --git a/apps/files_external/tests/ftp.php b/apps/files_external/tests/ftp.php index d0404b5f34c..923b5e39681 100644 --- a/apps/files_external/tests/ftp.php +++ b/apps/files_external/tests/ftp.php @@ -6,7 +6,9 @@ * See the COPYING-README file. */ -class Test_Filestorage_FTP extends Test_FileStorage { +namespace Test\Files\Storage; + +class FTP extends Storage { private $config; public function setUp() { @@ -16,12 +18,12 @@ class Test_Filestorage_FTP extends Test_FileStorage { $this->markTestSkipped('FTP backend not configured'); } $this->config['ftp']['root'] .= '/' . $id; //make sure we have an new empty folder to work in - $this->instance = new OC_Filestorage_FTP($this->config['ftp']); + $this->instance = new \OC\Files\Storage\FTP($this->config['ftp']); } public function tearDown() { if ($this->instance) { - OCP\Files::rmdirr($this->instance->constructUrl('')); + \OCP\Files::rmdirr($this->instance->constructUrl('')); } } @@ -32,18 +34,18 @@ class Test_Filestorage_FTP extends Test_FileStorage { 'root' => '/', 'secure' => false ); $instance = new OC_Filestorage_FTP($config); - $this->assertEqual('ftp://ftp:ftp@localhost/', $instance->constructUrl('')); + $this->assertEquals('ftp://ftp:ftp@localhost/', $instance->constructUrl('')); $config['secure'] = true; $instance = new OC_Filestorage_FTP($config); - $this->assertEqual('ftps://ftp:ftp@localhost/', $instance->constructUrl('')); + $this->assertEquals('ftps://ftp:ftp@localhost/', $instance->constructUrl('')); $config['secure'] = 'false'; $instance = new OC_Filestorage_FTP($config); - $this->assertEqual('ftp://ftp:ftp@localhost/', $instance->constructUrl('')); + $this->assertEquals('ftp://ftp:ftp@localhost/', $instance->constructUrl('')); $config['secure'] = 'true'; $instance = new OC_Filestorage_FTP($config); - $this->assertEqual('ftps://ftp:ftp@localhost/', $instance->constructUrl('')); + $this->assertEquals('ftps://ftp:ftp@localhost/', $instance->constructUrl('')); } } diff --git a/apps/files_external/tests/google.php b/apps/files_external/tests/google.php index 379bf992ff5..f344163a8b9 100644 --- a/apps/files_external/tests/google.php +++ b/apps/files_external/tests/google.php @@ -20,8 +20,9 @@ * License along with this library. If not, see <http://www.gnu.org/licenses/>. */ -class Test_Filestorage_Google extends Test_FileStorage { +namespace Test\Files\Storage; +class Google extends Storage { private $config; public function setUp() { @@ -31,7 +32,7 @@ class Test_Filestorage_Google extends Test_FileStorage { $this->markTestSkipped('Google backend not configured'); } $this->config['google']['root'] .= '/' . $id; //make sure we have an new empty folder to work in - $this->instance = new OC_Filestorage_Google($this->config['google']); + $this->instance = new \OC\Files\Storage\Google($this->config['google']); } public function tearDown() { diff --git a/apps/files_external/tests/smb.php b/apps/files_external/tests/smb.php index 2d6268ef269..be3ea5a8308 100644 --- a/apps/files_external/tests/smb.php +++ b/apps/files_external/tests/smb.php @@ -6,7 +6,10 @@ * See the COPYING-README file. */ -class Test_Filestorage_SMB extends Test_FileStorage { +namespace Test\Files\Storage; + +class SMB extends Storage { + private $config; public function setUp() { @@ -16,12 +19,12 @@ class Test_Filestorage_SMB extends Test_FileStorage { $this->markTestSkipped('Samba backend not configured'); } $this->config['smb']['root'] .= $id; //make sure we have an new empty folder to work in - $this->instance = new OC_Filestorage_SMB($this->config['smb']); + $this->instance = new \OC\Files\Storage\SMB($this->config['smb']); } public function tearDown() { if ($this->instance) { - OCP\Files::rmdirr($this->instance->constructUrl('')); + \OCP\Files::rmdirr($this->instance->constructUrl('')); } } } diff --git a/apps/files_external/tests/swift.php b/apps/files_external/tests/swift.php index 8b25db50996..5c782840246 100644 --- a/apps/files_external/tests/swift.php +++ b/apps/files_external/tests/swift.php @@ -6,7 +6,9 @@ * See the COPYING-README file. */ -class Test_Filestorage_SWIFT extends Test_FileStorage { +namespace Test\Files\Storage; + +class SWIFT extends Storage { private $config; public function setUp() { @@ -16,7 +18,7 @@ class Test_Filestorage_SWIFT extends Test_FileStorage { $this->markTestSkipped('OpenStack SWIFT backend not configured'); } $this->config['swift']['root'] .= '/' . $id; //make sure we have an new empty folder to work in - $this->instance = new OC_Filestorage_SWIFT($this->config['swift']); + $this->instance = new \OC\Files\Storage\SWIFT($this->config['swift']); } diff --git a/apps/files_external/tests/webdav.php b/apps/files_external/tests/webdav.php index dd938a0c93a..1702898045e 100644 --- a/apps/files_external/tests/webdav.php +++ b/apps/files_external/tests/webdav.php @@ -6,7 +6,10 @@ * See the COPYING-README file. */ -class Test_Filestorage_DAV extends Test_FileStorage { +namespace Test\Files\Storage; + +class DAV extends Storage { + private $config; public function setUp() { @@ -16,7 +19,7 @@ class Test_Filestorage_DAV extends Test_FileStorage { $this->markTestSkipped('WebDAV backend not configured'); } $this->config['webdav']['root'] .= '/' . $id; //make sure we have an new empty folder to work in - $this->instance = new OC_Filestorage_DAV($this->config['webdav']); + $this->instance = new \OC\Files\Storage\DAV($this->config['webdav']); } public function tearDown() { diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php index 0104d0d017f..d3e05cc62d8 100644 --- a/apps/files_sharing/appinfo/app.php +++ b/apps/files_sharing/appinfo/app.php @@ -2,8 +2,11 @@ OC::$CLASSPATH['OC_Share_Backend_File'] = "apps/files_sharing/lib/share/file.php"; OC::$CLASSPATH['OC_Share_Backend_Folder'] = 'apps/files_sharing/lib/share/folder.php'; -OC::$CLASSPATH['OC_Filestorage_Shared'] = "apps/files_sharing/lib/sharedstorage.php"; -OCP\Util::connectHook('OC_Filesystem', 'setup', 'OC_Filestorage_Shared', 'setup'); +OC::$CLASSPATH['OC\Files\Storage\Shared'] = "apps/files_sharing/lib/sharedstorage.php"; +OC::$CLASSPATH['OC\Files\Cache\Shared_Cache'] = 'apps/files_sharing/lib/cache.php'; +OC::$CLASSPATH['OC\Files\Cache\Shared_Permissions'] = 'apps/files_sharing/lib/permissions.php'; +OC::$CLASSPATH['OC\Files\Cache\Shared_Watcher'] = 'apps/files_sharing/lib/watcher.php'; +OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); OCP\Share::registerBackend('file', 'OC_Share_Backend_File'); OCP\Share::registerBackend('folder', 'OC_Share_Backend_Folder', 'file'); -OCP\Util::addScript('files_sharing', 'share');
\ No newline at end of file +OCP\Util::addScript('files_sharing', 'share'); diff --git a/apps/files_sharing/appinfo/info.xml b/apps/files_sharing/appinfo/info.xml index a44d0338bb6..1f24a4dde83 100644 --- a/apps/files_sharing/appinfo/info.xml +++ b/apps/files_sharing/appinfo/info.xml @@ -5,7 +5,7 @@ <description>File sharing between users</description> <licence>AGPL</licence> <author>Michael Gapczynski</author> - <require>4.9</require> + <require>4.91</require> <shipped>true</shipped> <default_enable/> <types> diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php index e998626f4a4..1d22b32b503 100644 --- a/apps/files_sharing/appinfo/update.php +++ b/apps/files_sharing/appinfo/update.php @@ -9,10 +9,12 @@ if (version_compare($installedVersion, '0.3', '<')) { OC_User::useBackend(new OC_User_Database()); OC_Group::useBackend(new OC_Group_Database()); OC_App::loadApps(array('authentication')); + $rootView = new \OC\Files\View(''); while ($row = $result->fetchRow()) { - $itemSource = OC_FileCache::getId($row['source'], ''); + $meta = $rootView->getFileInfo($$row['source']); + $itemSource = $meta['fileid']; if ($itemSource != -1) { - $file = OC_FileCache::get($row['source'], ''); + $file = $meta; if ($file['mimetype'] == 'httpd/unix-directory') { $itemType = 'folder'; } else { @@ -68,6 +70,6 @@ if (version_compare($installedVersion, '0.3.3', '<')) { OC_App::loadApps(array('authentication')); $users = OC_User::getUsers(); foreach ($users as $user) { - OC_FileCache::delete('Shared', '/'.$user.'/files/'); +// OC_FileCache::delete('Shared', '/'.$user.'/files/'); } -}
\ No newline at end of file +} diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index a46d0179801..eb5a6e8cb7f 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -1,6 +1,8 @@ $(document).ready(function() { - if (typeof OC.Share !== 'undefined' && typeof FileActions !== 'undefined' && !publicListView) { + var disableSharing = $('#disableSharing').data('status'); + + if (typeof OC.Share !== 'undefined' && typeof FileActions !== 'undefined' && !disableSharing) { FileActions.register('all', 'Share', OC.PERMISSION_READ, OC.imagePath('core', 'actions/share'), function(filename) { if ($('#dir').val() == '/') { diff --git a/apps/files_sharing/l10n/lb.php b/apps/files_sharing/l10n/lb.php new file mode 100644 index 00000000000..8aba5806aa0 --- /dev/null +++ b/apps/files_sharing/l10n/lb.php @@ -0,0 +1,3 @@ +<?php $TRANSLATIONS = array( +"Password" => "Passwuert" +); diff --git a/apps/files_sharing/l10n/sr.php b/apps/files_sharing/l10n/sr.php new file mode 100644 index 00000000000..7a922b89002 --- /dev/null +++ b/apps/files_sharing/l10n/sr.php @@ -0,0 +1,3 @@ +<?php $TRANSLATIONS = array( +"Submit" => "Пошаљи" +); diff --git a/apps/files_sharing/l10n/zh_TW.php b/apps/files_sharing/l10n/zh_TW.php index fa4f8075c6e..f1d28731a7f 100644 --- a/apps/files_sharing/l10n/zh_TW.php +++ b/apps/files_sharing/l10n/zh_TW.php @@ -4,5 +4,6 @@ "%s shared the folder %s with you" => "%s 分享了資料夾 %s 給您", "%s shared the file %s with you" => "%s 分享了檔案 %s 給您", "Download" => "下載", -"No preview available for" => "無法é 覽" +"No preview available for" => "無法é 覽", +"web services under your control" => "在您掌控之下的網路æœå‹™" ); diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php new file mode 100644 index 00000000000..9655e447875 --- /dev/null +++ b/apps/files_sharing/lib/cache.php @@ -0,0 +1,258 @@ +<?php +/** + * ownCloud + * + * @author Michael Gapczynski + * @copyright 2012 Michael Gapczynski mtgap@owncloud.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * 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 <http://www.gnu.org/licenses/>. + */ + +namespace OC\Files\Cache; + +/** + * Metadata cache for shared files + * + * don't use this class directly if you need to get metadata, use \OC\Files\Filesystem::getFileInfo instead + */ +class Shared_Cache extends Cache { + + private $files = array(); + + public function __construct($storage) { + + } + + /** + * @brief Get the source cache of a shared file or folder + * @param string $target Shared target file path + * @return \OC\Files\Cache\Cache + */ + private function getSourceCache($target) { + $source = \OC_Share_Backend_File::getSource($target); + if (isset($source['path'])) { + $source['path'] = '/' . $source['uid_owner'] . '/' . $source['path']; + \OC\Files\Filesystem::initMountPoints($source['uid_owner']); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source['path']); + if ($storage) { + $this->files[$target] = $internalPath; + $cache = $storage->getCache(); + $this->storageId = $storage->getId(); + $this->numericId = $cache->getNumericStorageId(); + return $cache; + } + } + return false; + } + + /** + * get the stored metadata of a file or folder + * + * @param string/int $file + * @return array + */ + public function get($file) { + if ($file == '') { + return \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_FILE_APP_ROOT); + } else if (is_string($file)) { + if ($cache = $this->getSourceCache($file)) { + return $cache->get($this->files[$file]); + } + } else { + $query = \OC_DB::prepare( + 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted` + FROM `*PREFIX*filecache` WHERE `fileid` = ?'); + $result = $query->execute(array($file)); + $data = $result->fetchRow(); + $data['fileid'] = (int)$data['fileid']; + $data['size'] = (int)$data['size']; + $data['mtime'] = (int)$data['mtime']; + $data['encrypted'] = (bool)$data['encrypted']; + $data['mimetype'] = $this->getMimetype($data['mimetype']); + $data['mimepart'] = $this->getMimetype($data['mimepart']); + return $data; + } + return false; + } + + /** + * get the metadata of all files stored in $folder + * + * @param string $folder + * @return array + */ + public function getFolderContents($folder) { + if ($folder == '') { + $files = \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_GET_FOLDER_CONTENTS); + foreach ($files as &$file) { + $file['mimetype'] = $this->getMimetype($file['mimetype']); + $file['mimepart'] = $this->getMimetype($file['mimepart']); + } + return $files; + } else { + if ($cache = $this->getSourceCache($folder)) { + return $cache->getFolderContents($this->files[$folder]); + } + } + return false; + } + + /** + * store meta data for a file or folder + * + * @param string $file + * @param array $data + * + * @return int file id + */ + public function put($file, array $data) { + if ($cache = $this->getSourceCache($file)) { + return $cache->put($this->files[$file], $data); + } + return false; + } + + /** + * get the file id for a file + * + * @param string $file + * @return int + */ + public function getId($file) { + if ($cache = $this->getSourceCache($file)) { + return $cache->getId($this->files[$file]); + } + return -1; + } + + /** + * check if a file is available in the cache + * + * @param string $file + * @return bool + */ + public function inCache($file) { + if ($file == '') { + return true; + } + return parent::inCache($file); + } + + /** + * remove a file or folder from the cache + * + * @param string $file + */ + public function remove($file) { + if ($cache = $this->getSourceCache($file)) { + $cache->remove($this->files[$file]); + } + } + + /** + * Move a file or folder in the cache + * + * @param string $source + * @param string $target + */ + public function move($source, $target) { + if ($cache = $this->getSourceCache($source)) { + $targetPath = \OC_Share_Backend_File::getSourcePath(dirname($target)); + if ($targetPath) { + $targetPath .= '/' . basename($target); + $cache->move($this->files[$source], $targetPath); + } + + } + } + + /** + * remove all entries for files that are stored on the storage from the cache + */ + public function clear() { + // Not a valid action for Shared Cache + } + + /** + * @param string $file + * + * @return int, Cache::NOT_FOUND, Cache::PARTIAL, Cache::SHALLOW or Cache::COMPLETE + */ + public function getStatus($file) { + if ($file == '') { + return self::COMPLETE; + } + if ($cache = $this->getSourceCache($file)) { + return $cache->getStatus($this->files[$file]); + } + return self::NOT_FOUND; + } + + /** + * search for files matching $pattern + * + * @param string $pattern + * @return array of file data + */ + public function search($pattern) { + // TODO + } + + /** + * search for files by mimetype + * + * @param string $part1 + * @param string $part2 + * @return array + */ + public function searchByMime($mimetype) { + if (strpos($mimetype, '/')) { + $where = '`mimetype` = ?'; + } else { + $where = '`mimepart` = ?'; + } + $mimetype = $this->getMimetypeId($mimetype); + $ids = $this->getAll(); + $placeholders = join(',', array_fill(0, count($ids), '?')); + $query = \OC_DB::prepare(' + SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted` + FROM `*PREFIX*filecache` WHERE ' . $where . ' AND `fileid` IN (' . $placeholders . ')' + ); + $result = $query->execute(array_merge(array($mimetype), $ids)); + return $result->fetchAll(); + } + + /** + * get the size of a folder and set it in the cache + * + * @param string $path + * @return int + */ + public function calculateFolderSize($path) { + if ($cache = $this->getSourceCache($path)) { + return $cache->calculateFolderSize($this->files[$path]); + } + return 0; + } + + /** + * get all file ids on the files on the storage + * + * @return int[] + */ + public function getAll() { + return \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_GET_ALL); + } + +} diff --git a/apps/files_sharing/lib/permissions.php b/apps/files_sharing/lib/permissions.php new file mode 100644 index 00000000000..2b068ff9350 --- /dev/null +++ b/apps/files_sharing/lib/permissions.php @@ -0,0 +1,85 @@ +<?php +/** +* ownCloud +* +* @author Michael Gapczynski +* @copyright 2012 Michael Gapczynski mtgap@owncloud.com +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* 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 <http://www.gnu.org/licenses/>. +*/ +namespace OC\Files\Cache; + +class Shared_Permissions extends Permissions { + + /** + * get the permissions for a single file + * + * @param int $fileId + * @param string $user + * @return int (-1 if file no permissions set) + */ + public function get($fileId, $user) { + if ($fileId == -1) { + return \OCP\PERMISSION_READ; + } + $source = \OCP\Share::getItemSharedWithBySource('file', $fileId, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE, null, true); + if ($source) { + return $source['permissions']; + } else { + return -1; + } + } + + /** + * set the permissions of a file + * + * @param int $fileId + * @param string $user + * @param int $permissions + */ + public function set($fileId, $user, $permissions) { + // Not a valid action for Shared Permissions + } + + /** + * get the permissions of multiply files + * + * @param int[] $fileIds + * @param string $user + * @return int[] + */ + public function getMultiple($fileIds, $user) { + if (count($fileIds) === 0) { + return array(); + } + foreach ($fileIds as $fileId) { + $filePermissions[$fileId] = self::get($fileId, $user); + } + return $filePermissions; + } + + /** + * remove the permissions for a file + * + * @param int $fileId + * @param string $user + */ + public function remove($fileId, $user) { + // Not a valid action for Shared Permissions + } + + public function removeMultiple($fileIds, $user) { + // Not a valid action for Shared Permissions + } +} diff --git a/apps/files_sharing/lib/share/file.php b/apps/files_sharing/lib/share/file.php index ac585236831..6d3c55a008f 100644 --- a/apps/files_sharing/lib/share/file.php +++ b/apps/files_sharing/lib/share/file.php @@ -22,16 +22,18 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent { const FORMAT_SHARED_STORAGE = 0; - const FORMAT_FILE_APP = 1; + const FORMAT_GET_FOLDER_CONTENTS = 1; const FORMAT_FILE_APP_ROOT = 2; const FORMAT_OPENDIR = 3; + const FORMAT_GET_ALL = 4; private $path; public function isValidSource($itemSource, $uidOwner) { - $path = OC_FileCache::getPath($itemSource, $uidOwner); - if ($path) { - $this->path = $path; + $query = \OC_DB::prepare('SELECT `name` FROM `*PREFIX*filecache` WHERE `fileid` = ?'); + $result = $query->execute(array($itemSource)); + if ($row = $result->fetchRow()) { + $this->path = $row['name']; return true; } return false; @@ -70,37 +72,21 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent { public function formatItems($items, $format, $parameters = null) { if ($format == self::FORMAT_SHARED_STORAGE) { // Only 1 item should come through for this format call - return array('path' => $items[key($items)]['path'], 'permissions' => $items[key($items)]['permissions']); - } else if ($format == self::FORMAT_FILE_APP) { - if (isset($parameters['mimetype_filter']) && $parameters['mimetype_filter']) { - $mimetype_filter = $parameters['mimetype_filter']; - } + return array('path' => $items[key($items)]['path'], 'permissions' => $items[key($items)]['permissions'], 'uid_owner' => $items[key($items)]['uid_owner']); + } else if ($format == self::FORMAT_GET_FOLDER_CONTENTS) { $files = array(); foreach ($items as $item) { - if (isset($mimetype_filter) - && strpos($item['mimetype'], $mimetype_filter) !== 0 - && $item['mimetype'] != 'httpd/unix-directory') { - continue; - } $file = array(); - $file['id'] = $item['file_source']; + $file['fileid'] = $item['file_source']; + $file['storage'] = $item['storage']; $file['path'] = $item['file_target']; + $file['parent'] = $item['file_parent']; $file['name'] = basename($item['file_target']); - $file['ctime'] = $item['ctime']; - $file['mtime'] = $item['mtime']; $file['mimetype'] = $item['mimetype']; + $file['mimepart'] = $item['mimepart']; $file['size'] = $item['size']; + $file['mtime'] = $item['mtime']; $file['encrypted'] = $item['encrypted']; - $file['versioned'] = $item['versioned']; - $file['directory'] = $parameters['folder']; - $file['type'] = ($item['mimetype'] == 'httpd/unix-directory') ? 'dir' : 'file'; - $file['permissions'] = $item['permissions']; - if ($file['type'] == 'file') { - // Remove Create permission if type is file - $file['permissions'] &= ~OCP\PERMISSION_CREATE; - } - // NOTE: Temporary fix to allow unsharing of files in root of Shared directory - $file['permissions'] |= OCP\PERMISSION_DELETE; $files[] = $file; } return $files; @@ -111,17 +97,48 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent { if ($item['mtime'] > $mtime) { $mtime = $item['mtime']; } - $size += $item['size']; + $size += (int)$item['size']; } - return array(0 => array('id' => -1, 'name' => 'Shared', 'mtime' => $mtime, 'mimetype' => 'httpd/unix-directory', 'size' => $size, 'writable' => false, 'type' => 'dir', 'directory' => '', 'permissions' => OCP\PERMISSION_READ)); + return array('fileid' => -1, 'name' => 'Shared', 'mtime' => $mtime, 'mimetype' => 'httpd/unix-directory', 'size' => $size); } else if ($format == self::FORMAT_OPENDIR) { $files = array(); foreach ($items as $item) { $files[] = basename($item['file_target']); } return $files; + } else if ($format == self::FORMAT_GET_ALL) { + $ids = array(); + foreach ($items as $item) { + $ids[] = $item['file_source']; + } + return $ids; } return array(); } + public static function getSource($target) { + if ($target == '') { + return false; + } + $target = '/'.$target; + $target = rtrim($target, '/'); + $pos = strpos($target, '/', 1); + // Get shared folder name + if ($pos !== false) { + $folder = substr($target, 0, $pos); + $source = \OCP\Share::getItemSharedWith('folder', $folder, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE); + if ($source) { + $source['path'] = $source['path'].substr($target, strlen($folder)); + return $source; + } + } else { + $source = \OCP\Share::getItemSharedWith('file', $target, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE); + if ($source) { + return $source; + } + } + \OCP\Util::writeLog('files_sharing', 'File source not found for: '.$target, \OCP\Util::ERROR); + return false; + } + } diff --git a/apps/files_sharing/lib/share/folder.php b/apps/files_sharing/lib/share/folder.php index d414fcf10fc..11c8c6b1e80 100644 --- a/apps/files_sharing/lib/share/folder.php +++ b/apps/files_sharing/lib/share/folder.php @@ -21,47 +21,26 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share_Backend_Collection { - public function formatItems($items, $format, $parameters = null) { - if ($format == self::FORMAT_SHARED_STORAGE) { - // Only 1 item should come through for this format call - return array('path' => $items[key($items)]['path'], 'permissions' => $items[key($items)]['permissions']); - } else if ($format == self::FORMAT_FILE_APP && isset($parameters['folder'])) { - // Only 1 item should come through for this format call - $folder = $items[key($items)]; - if (isset($parameters['mimetype_filter'])) { - $mimetype_filter = $parameters['mimetype_filter']; - } else { - $mimetype_filter = ''; - } - $path = $folder['path'].substr($parameters['folder'], 7 + strlen($folder['file_target'])); - $files = OC_FileCache::getFolderContent($path, '', $mimetype_filter); - foreach ($files as &$file) { - $file['directory'] = $parameters['folder']; - $file['type'] = ($file['mimetype'] == 'httpd/unix-directory') ? 'dir' : 'file'; - $file['permissions'] = $folder['permissions']; - if ($file['type'] == 'file') { - // Remove Create permission if type is file - $file['permissions'] &= ~OCP\PERMISSION_CREATE; - } - } - return $files; - } - return array(); - } - public function getChildren($itemSource) { $children = array(); $parents = array($itemSource); + $query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ?'); + $result = $query->execute(array('httpd/unix-directory')); + if ($row = $result->fetchRow()) { + $mimetype = $row['id']; + } else { + $mimetype = -1; + } while (!empty($parents)) { $parents = "'".implode("','", $parents)."'"; - $query = OC_DB::prepare('SELECT `id`, `name`, `mimetype` FROM `*PREFIX*fscache` WHERE `parent` IN ('.$parents.')'); + $query = OC_DB::prepare('SELECT `fileid`, `name`, `mimetype` FROM `*PREFIX*filecache` WHERE `parent` IN ('.$parents.')'); $result = $query->execute(); $parents = array(); while ($file = $result->fetchRow()) { - $children[] = array('source' => $file['id'], 'file_path' => $file['name']); + $children[] = array('source' => $file['fileid'], 'file_path' => $file['name']); // If a child folder is found look inside it - if ($file['mimetype'] == 'httpd/unix-directory') { - $parents[] = $file['id']; + if ($file['mimetype'] == $mimetype) { + $parents[] = $file['fileid']; } } } diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 50db9166fe7..ea28ca69b93 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -20,10 +20,12 @@ * */ +namespace OC\Files\Storage; + /** * Convert target path to source path and pass the function call to the correct storage provider */ -class OC_Filestorage_Shared extends OC_Filestorage_Common { +class Shared extends \OC\Files\Storage\Common { private $sharedFolder; private $files = array(); @@ -32,54 +34,36 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { $this->sharedFolder = $arguments['sharedFolder']; } + public function getId(){ + return 'shared::' . $this->sharedFolder; + } + /** - * @brief Get the source file path and the permissions granted for a shared file + * @brief Get the source file path, permissions, and owner for a shared file * @param string Shared target file path - * @return Returns array with the keys path and permissions or false if not found + * @return Returns array with the keys path, permissions, and owner or false if not found */ private function getFile($target) { - $target = '/'.$target; - $target = rtrim($target, '/'); - if (isset($this->files[$target])) { - return $this->files[$target]; - } else { - $pos = strpos($target, '/', 1); - // Get shared folder name - if ($pos !== false) { - $folder = substr($target, 0, $pos); - if (isset($this->files[$folder])) { - $file = $this->files[$folder]; - } else { - $file = OCP\Share::getItemSharedWith('folder', $folder, OC_Share_Backend_File::FORMAT_SHARED_STORAGE); - } - if ($file) { - $this->files[$target]['path'] = $file['path'].substr($target, strlen($folder)); - $this->files[$target]['permissions'] = $file['permissions']; - return $this->files[$target]; - } - } else { - $file = OCP\Share::getItemSharedWith('file', $target, OC_Share_Backend_File::FORMAT_SHARED_STORAGE); - if ($file) { - $this->files[$target] = $file; - return $this->files[$target]; - } + if (!isset($this->files[$target])) { + $source = \OC_Share_Backend_File::getSource($target); + if ($source) { + $source['path'] = '/'.$source['uid_owner'].'/'.$source['path']; } - OCP\Util::writeLog('files_sharing', 'File source not found for: '.$target, OCP\Util::ERROR); - return false; + $this->files[$target] = $source; } + return $this->files[$target]; } /** * @brief Get the source file path for a shared file * @param string Shared target file path - * @return Returns source file path or false if not found + * @return string source file path or false if not found */ private function getSourcePath($target) { - $file = $this->getFile($target); - if (isset($file['path'])) { - $uid = substr($file['path'], 1, strpos($file['path'], '/', 1) - 1); - OC_Filesystem::mount('OC_Filestorage_Local', array('datadir' => OC_User::getHome($uid)), $uid); - return $file['path']; + $source = $this->getFile($target); + if ($source) { + \OC\Files\Filesystem::initMountPoints($source['uid_owner']); + return $source['path']; } return false; } @@ -87,61 +71,42 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { /** * @brief Get the permissions granted for a shared file * @param string Shared target file path - * @return Returns CRUDS permissions granted or false if not found + * @return int CRUDS permissions granted or false if not found */ - private function getPermissions($target) { - $file = $this->getFile($target); - if (isset($file['permissions'])) { - return $file['permissions']; + public function getPermissions($target) { + $source = $this->getFile($target); + if ($source) { + return $source['permissions']; } return false; } - /** - * @brief Get the internal path to pass to the storage filesystem call - * @param string Source file path - * @return Source file path with mount point stripped out - */ - private function getInternalPath($path) { - $mountPoint = OC_Filesystem::getMountPoint($path); - $internalPath = substr($path, strlen($mountPoint)); - return $internalPath; - } - - public function getOwner($target) { - $shared_item = OCP\Share::getItemSharedWith('folder', $target, OC_Share_Backend_File::FORMAT_SHARED_STORAGE); - if ($shared_item) { - return $shared_item[0]["uid_owner"]; - } - return null; - } - public function mkdir($path) { if ($path == '' || $path == '/' || !$this->isCreatable(dirname($path))) { return false; } else if ($source = $this->getSourcePath($path)) { - $storage = OC_Filesystem::getStorage($source); - return $storage->mkdir($this->getInternalPath($source)); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->mkdir($internalPath); } return false; } public function rmdir($path) { if (($source = $this->getSourcePath($path)) && $this->isDeletable($path)) { - $storage = OC_Filesystem::getStorage($source); - return $storage->rmdir($this->getInternalPath($source)); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->rmdir($internalPath); } return false; } public function opendir($path) { if ($path == '' || $path == '/') { - $files = OCP\Share::getItemsSharedWith('file', OC_Share_Backend_Folder::FORMAT_OPENDIR); - OC_FakeDirStream::$dirs['shared'] = $files; + $files = \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_Folder::FORMAT_OPENDIR); + \OC\Files\Stream\Dir::register('shared', $files); return opendir('fakedir://shared'); } else if ($source = $this->getSourcePath($path)) { - $storage = OC_Filesystem::getStorage($source); - return $storage->opendir($this->getInternalPath($source)); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->opendir($internalPath); } return false; } @@ -150,16 +115,16 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { if ($path == '' || $path == '/') { return true; } else if ($source = $this->getSourcePath($path)) { - $storage = OC_Filesystem::getStorage($source); - return $storage->is_dir($this->getInternalPath($source)); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->is_dir($internalPath); } return false; } public function is_file($path) { if ($source = $this->getSourcePath($path)) { - $storage = OC_Filesystem::getStorage($source); - return $storage->is_file($this->getInternalPath($source)); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->is_file($internalPath); } return false; } @@ -168,11 +133,10 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { if ($path == '' || $path == '/') { $stat['size'] = $this->filesize($path); $stat['mtime'] = $this->filemtime($path); - $stat['ctime'] = $this->filectime($path); return $stat; } else if ($source = $this->getSourcePath($path)) { - $storage = OC_Filesystem::getStorage($source); - return $storage->stat($this->getInternalPath($source)); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->stat($internalPath); } return false; } @@ -181,8 +145,8 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { if ($path == '' || $path == '/') { return 'dir'; } else if ($source = $this->getSourcePath($path)) { - $storage = OC_Filesystem::getStorage($source); - return $storage->filetype($this->getInternalPath($source)); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->filetype($internalPath); } return false; } @@ -191,8 +155,8 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { if ($path == '' || $path == '/' || $this->is_dir($path)) { return 0; } else if ($source = $this->getSourcePath($path)) { - $storage = OC_Filesystem::getStorage($source); - return $storage->filesize($this->getInternalPath($source)); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->filesize($internalPath); } return false; } @@ -201,7 +165,7 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { if ($path == '') { return false; } - return ($this->getPermissions($path) & OCP\PERMISSION_CREATE); + return ($this->getPermissions($path) & \OCP\PERMISSION_CREATE); } public function isReadable($path) { @@ -212,54 +176,33 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { if ($path == '') { return false; } - return ($this->getPermissions($path) & OCP\PERMISSION_UPDATE); + return ($this->getPermissions($path) & \OCP\PERMISSION_UPDATE); } public function isDeletable($path) { if ($path == '') { return true; } - return ($this->getPermissions($path) & OCP\PERMISSION_DELETE); + return ($this->getPermissions($path) & \OCP\PERMISSION_DELETE); } public function isSharable($path) { if ($path == '') { return false; } - return ($this->getPermissions($path) & OCP\PERMISSION_SHARE); + return ($this->getPermissions($path) & \OCP\PERMISSION_SHARE); } public function file_exists($path) { if ($path == '' || $path == '/') { return true; } else if ($source = $this->getSourcePath($path)) { - $storage = OC_Filesystem::getStorage($source); - return $storage->file_exists($this->getInternalPath($source)); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->file_exists($internalPath); } return false; } - public function filectime($path) { - if ($path == '' || $path == '/') { - $ctime = 0; - if ($dh = $this->opendir($path)) { - while (($filename = readdir($dh)) !== false) { - $tempctime = $this->filectime($filename); - if ($tempctime < $ctime) { - $ctime = $tempctime; - } - } - } - return $ctime; - } else { - $source = $this->getSourcePath($path); - if ($source) { - $storage = OC_Filesystem::getStorage($source); - return $storage->filectime($this->getInternalPath($source)); - } - } - } - public function filemtime($path) { if ($path == '' || $path == '/') { $mtime = 0; @@ -275,8 +218,8 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { } else { $source = $this->getSourcePath($path); if ($source) { - $storage = OC_Filesystem::getStorage($source); - return $storage->filemtime($this->getInternalPath($source)); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->filemtime($internalPath); } } } @@ -288,9 +231,9 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { 'target' => $this->sharedFolder.$path, 'source' => $source, ); - OCP\Util::emitHook('OC_Filestorage_Shared', 'file_get_contents', $info); - $storage = OC_Filesystem::getStorage($source); - return $storage->file_get_contents($this->getInternalPath($source)); + \OCP\Util::emitHook('\OC\Files\Storage\Shared', 'file_get_contents', $info); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->file_get_contents($internalPath); } } @@ -304,9 +247,9 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { 'target' => $this->sharedFolder.$path, 'source' => $source, ); - OCP\Util::emitHook('OC_Filestorage_Shared', 'file_put_contents', $info); - $storage = OC_Filesystem::getStorage($source); - $result = $storage->file_put_contents($this->getInternalPath($source), $data); + \OCP\Util::emitHook('\OC\Files\Storage\Shared', 'file_put_contents', $info); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + $result = $storage->file_put_contents($internalPath, $data); return $result; } return false; @@ -316,8 +259,8 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { // Delete the file if DELETE permission is granted if ($source = $this->getSourcePath($path)) { if ($this->isDeletable($path)) { - $storage = OC_Filesystem::getStorage($source); - return $storage->unlink($this->getInternalPath($source)); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->unlink($internalPath); } else if (dirname($path) == '/' || dirname($path) == '.') { // Unshare the file from the user if in the root of the Shared folder if ($this->is_dir($path)) { @@ -325,7 +268,7 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { } else { $itemType = 'file'; } - return OCP\Share::unshareFromSelf($itemType, $path); + return \OCP\Share::unshareFromSelf($itemType, $path); } } return false; @@ -340,8 +283,9 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { if (dirname($path1) == dirname($path2)) { // Rename the file if UPDATE permission is granted if ($this->isUpdatable($path1)) { - $storage = OC_Filesystem::getStorage($oldSource); - return $storage->rename($this->getInternalPath($oldSource), $this->getInternalPath($newSource)); + list($storage, $oldInternalPath) = \OC\Files\Filesystem::resolvePath($oldSource); + list( , $newInternalPath) = \OC\Files\Filesystem::resolvePath($newSource); + return $storage->rename($oldInternalPath, $newInternalPath); } } else { // Move the file if DELETE and CREATE permissions are granted @@ -355,8 +299,9 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { return $this->unlink($path1); } } else { - $storage = OC_Filesystem::getStorage($oldSource); - return $storage->rename($this->getInternalPath($oldSource), $this->getInternalPath($newSource)); + list($storage, $oldInternalPath) = \OC\Files\Filesystem::resolvePath($oldSource); + list( , $newInternalPath) = \OC\Files\Filesystem::resolvePath($newSource); + return $storage->rename($oldInternalPath, $newInternalPath); } } } @@ -369,7 +314,7 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { if ($this->isCreatable(dirname($path2))) { $source = $this->fopen($path1, 'r'); $target = $this->fopen($path2, 'w'); - return OC_Helper::streamCopy($source, $target); + return \OC_Helper::streamCopy($source, $target); } return false; } @@ -400,9 +345,9 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { 'source' => $source, 'mode' => $mode, ); - OCP\Util::emitHook('OC_Filestorage_Shared', 'fopen', $info); - $storage = OC_Filesystem::getStorage($source); - return $storage->fopen($this->getInternalPath($source), $mode); + \OCP\Util::emitHook('\OC\Files\Storage\Shared', 'fopen', $info); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->fopen($internalPath, $mode); } return false; } @@ -412,47 +357,88 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { return 'httpd/unix-directory'; } if ($source = $this->getSourcePath($path)) { - $storage = OC_Filesystem::getStorage($source); - return $storage->getMimeType($this->getInternalPath($source)); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->getMimeType($internalPath); } return false; } public function free_space($path) { + if ($path == '') { + return -1; + } $source = $this->getSourcePath($path); if ($source) { - $storage = OC_Filesystem::getStorage($source); - return $storage->free_space($this->getInternalPath($source)); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->free_space($internalPath); } } public function getLocalFile($path) { if ($source = $this->getSourcePath($path)) { - $storage = OC_Filesystem::getStorage($source); - return $storage->getLocalFile($this->getInternalPath($source)); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->getLocalFile($internalPath); } return false; } public function touch($path, $mtime = null) { if ($source = $this->getSourcePath($path)) { - $storage = OC_Filesystem::getStorage($source); - return $storage->touch($this->getInternalPath($source), $mtime); + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->touch($internalPath, $mtime); } return false; } public static function setup($options) { - $user_dir = $options['user_dir']; - OC_Filesystem::mount('OC_Filestorage_Shared', array('sharedFolder' => '/Shared'), $user_dir.'/Shared/'); + if (\OCP\Share::getItemsSharedWith('file')) { + $user_dir = $options['user_dir']; + \OC\Files\Filesystem::mount('\OC\Files\Storage\Shared', array('sharedFolder' => '/Shared'), $user_dir.'/Shared/'); + } } - /** - * check if a file or folder has been updated since $time - * @param int $time - * @return bool - */ public function hasUpdated($path, $time) { - //TODO + if ($path == '') { + return false; + } + return $this->filemtime($path) > $time; + } + + public function getCache($path = '') { + return new \OC\Files\Cache\Shared_Cache($this); + } + + public function getScanner($path = '') { + return new \OC\Files\Cache\Scanner($this); + } + + public function getPermissionsCache($path = '') { + return new \OC\Files\Cache\Shared_Permissions($this); + } + + public function getWatcher($path = '') { + return new \OC\Files\Cache\Shared_Watcher($this); + } + + public function getOwner($path) { + if ($path == '') { + return false; + } + $source = $this->getFile($path); + if ($source) { + return $source['uid_owner']; + } return false; } + + public function getETag($path) { + if ($path == '') { + return parent::getETag($path); + } + if ($source = $this->getSourcePath($path)) { + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); + return $storage->getETag($internalPath); + } + return null; + } + } diff --git a/apps/files_sharing/lib/watcher.php b/apps/files_sharing/lib/watcher.php new file mode 100644 index 00000000000..e67d1ee9086 --- /dev/null +++ b/apps/files_sharing/lib/watcher.php @@ -0,0 +1,51 @@ +<?php +/** +* ownCloud +* +* @author Michael Gapczynski +* @copyright 2012 Michael Gapczynski mtgap@owncloud.com +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* 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 <http://www.gnu.org/licenses/>. +*/ + +namespace OC\Files\Cache; + +/** + * check the storage backends for updates and change the cache accordingly + */ +class Shared_Watcher extends Watcher { + + /** + * check $path for updates + * + * @param string $path + */ + public function checkUpdate($path) { + if ($path != '') { + parent::checkUpdate($path); + } + } + + /** + * remove deleted files in $path from the cache + * + * @param string $path + */ + public function cleanFolder($path) { + if ($path != '') { + parent::cleanFolder($path); + } + } + +}
\ No newline at end of file diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php index efd977a1b6a..9cf45e56fb9 100644 --- a/apps/files_sharing/public.php +++ b/apps/files_sharing/public.php @@ -9,9 +9,10 @@ if (isset($_GET['token'])) { unset($_GET['file']); $qry = \OC_DB::prepare('SELECT `source` FROM `*PREFIX*sharing` WHERE `target` = ?', 1); $filepath = $qry->execute(array($_GET['token']))->fetchOne(); - if(isset($filepath)) { - $info = OC_FileCache_Cached::get($filepath, ''); - if(strtolower($info['mimetype']) == 'httpd/unix-directory') { + 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; @@ -25,7 +26,7 @@ if (isset($_GET['token'])) { 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_Filesystem::getMountPoint($path), -7, 6) == "Shared") { + if (substr(\OC\Files\Filesystem::getMountPoint($path), -7, 6) == "Shared") { $path_parts = explode('/', $path, 5); $user = $path_parts[1]; $intPath = '/'.$path_parts[4]; @@ -37,16 +38,19 @@ function getID($path) { $row = $result->fetchRow(); $fileSource = $row['item_source']; } else { - $fileSource = OC_Filecache::getId($path, ''); + $rootView = new \OC\Files\View(''); + $meta = $rootView->getFileInfo($path); + $fileSource = $meta['fileid']; } return $fileSource; } + // Enf of backward compatibility /** * lookup file path and owner by fetching it from the fscache - * needed becaus OC_FileCache::getPath($id, $user) already requires the user + * needed because OC_FileCache::getPath($id, $user) already requires the user * @param int $id * @return array */ @@ -86,41 +90,43 @@ if (isset($_GET['t'])) { 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); +} 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); + } } - } - $shareOwner = substr($path, 1, strpos($path, '/', 1) - 1); + $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 (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 ($linkItem) { if (!isset($linkItem['item_type'])) { - OCP\Util::writeLog('share', 'No item type set for share id: '.$linkItem['id'], \OCP\Util::ERROR); + OCP\Util::writeLog('share', 'No item type set for share id: ' . $linkItem['id'], \OCP\Util::ERROR); header('HTTP/1.0 404 Not Found'); $tmpl = new OCP\Template('', '404', 'guest'); $tmpl->printPage(); @@ -128,11 +134,13 @@ if ($linkItem) { } if (isset($linkItem['share_with'])) { // Authenticate share_with - $url = OCP\Util::linkToPublic('files').'&t='.$token; + $url = OCP\Util::linkToPublic('files') . '&t=' . $token; if (isset($_GET['file'])) { - $url .= '&file='.urlencode($_GET['file']); - } else if (isset($_GET['dir'])) { - $url .= '&dir='.urlencode($_GET['dir']); + $url .= '&file=' . urlencode($_GET['file']); + } else { + if (isset($_GET['dir'])) { + $url .= '&dir=' . urlencode($_GET['dir']); + } } if (isset($_POST['password'])) { $password = $_POST['password']; @@ -173,13 +181,13 @@ if ($linkItem) { } } } - $basePath = substr($pathAndUser['path'], strlen('/'.$fileOwner.'/files')); + $basePath = substr($pathAndUser['path'], strlen('/' . $fileOwner . '/files')); $path = $basePath; if (isset($_GET['path'])) { $path .= $_GET['path']; } - if (!$path || !OC_Filesystem::isValidPath($path) || !OC_Filesystem::file_exists($path)) { - OCP\Util::writeLog('share', 'Invalid path '.$path.' for share id '.$linkItem['id'], \OCP\Util::ERROR); + 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(); @@ -189,13 +197,15 @@ if ($linkItem) { $file = basename($path); // Download the file if (isset($_GET['download'])) { - if (isset($_GET['path']) && $_GET['path'] !== '' ) { - if ( isset($_GET['files']) ) { // download selected files + 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 { + 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 OC_Files::get($dir, $file, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); @@ -207,9 +217,10 @@ if ($linkItem) { OCP\Util::addScript('files', 'fileactions'); $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_Filesystem::getMimeType($path)); + $tmpl->assign('mimetype', \OC\Files\Filesystem::getMimeType($path)); if (isset($_GET['path'])) { $getPath = $_GET['path']; } else { @@ -220,7 +231,7 @@ if ($linkItem) { .(isset($_GET['dir'])?'&dir='.$_GET['dir']:'') .(isset($_GET['file'])?'&file='.$_GET['file']:''); // Show file list - if (OC_Filesystem::is_dir($path)) { + if (\OC\Files\Filesystem::is_dir($path)) { OCP\Util::addStyle('files', 'files'); OCP\Util::addScript('files', 'files'); OCP\Util::addScript('files', 'filelist'); @@ -231,9 +242,9 @@ if ($linkItem) { if ($i['type'] == 'file') { $fileinfo = pathinfo($i['name']); $i['basename'] = $fileinfo['filename']; - $i['extension'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : ''; + $i['extension'] = isset($fileinfo['extension']) ? ('.' . $fileinfo['extension']) : ''; } - $i['directory'] = '/'.substr($i['directory'], $rootLength); + $i['directory'] = '/' . substr($i['directory'], $rootLength); if ($i['directory'] == '/') { $i['directory'] = ''; } @@ -250,14 +261,142 @@ if ($linkItem) { //add subdir breadcrumbs foreach (explode('/', urldecode($getPath)) as $i) { if ($i != '') { - $pathtohere .= '/'.$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('publicListView', true); + $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', '' ); @@ -278,21 +417,11 @@ if ($linkItem) { $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 { - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') - .$urlLinkIdentifiers.'&download&path='.urlencode($getPath)); - } + OCP\Util::writeLog('share', 'could not resolve linkItem', \OCP\Util::DEBUG); } - $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'); $tmpl->printPage(); + diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index 647e1e08a31..71fca09ed6d 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -1,11 +1,3 @@ -<script type="text/javascript"> - <?php if ( array_key_exists('publicListView', $_) && $_['publicListView'] == true ) { - echo "var publicListView = true;"; - } else { - echo "var publicListView = false;"; - } - ?> -</script> <input type="hidden" name="dir" value="<?php echo $_['dir'] ?>" id="dir"> <input type="hidden" name="downloadURL" value="<?php echo $_['downloadURL'] ?>" id="downloadURL"> <input type="hidden" name="filename" value="<?php echo $_['filename'] ?>" id="filename"> @@ -14,9 +6,9 @@ <a href="<?php echo link_to('', 'index.php'); ?>" title="" id="owncloud"><img class="svg" src="<?php echo image_path('', 'logo-wide.svg'); ?>" alt="ownCloud" /></a> <div class="header-right"> <?php if (isset($_['folder'])): ?> - <span id="details"><?php echo $l->t('%s shared the folder %s with you', array($_['uidOwner'], $_['filename'])) ?></span> + <span id="details"><?php echo $l->t('%s shared the folder %s with you', array($_['displayName'], $_['filename'])) ?></span> <?php else: ?> - <span id="details"><?php echo $l->t('%s shared the file %s with you', array($_['uidOwner'], $_['filename'])) ?></span> + <span id="details"><?php echo $l->t('%s shared the file %s with you', array($_['displayName'], $_['filename'])) ?></span> <?php endif; ?> <?php if (!isset($_['folder']) || $_['allowZipDownload']): ?> <a href="<?php echo $_['downloadURL']; ?>" class="button" id="download"><img class="svg" alt="Download" src="<?php echo OCP\image_path("core", "actions/download.svg"); ?>" /><?php echo $l->t('Download')?></a> diff --git a/apps/files_trashbin/ajax/undelete.php b/apps/files_trashbin/ajax/undelete.php new file mode 100644 index 00000000000..a7bb5b9de2d --- /dev/null +++ b/apps/files_trashbin/ajax/undelete.php @@ -0,0 +1,45 @@ +<?php + +if(!OCP\User::isLoggedIn()) {
+ exit;
+} + +$files = $_REQUEST['files']; +$dirlisting = $_REQUEST['dirlisting']; +$list = explode(';', $files); + +$error = array(); +$success = array(); + +$i = 0; +foreach ($list as $file) { + if ( $dirlisting=='0') { + $delimiter = strrpos($file, '.d'); + $filename = substr($file, 0, $delimiter); + $timestamp = substr($file, $delimiter+2); + } else { + $path_parts = pathinfo($file); + $filename = $path_parts['basename']; + $timestamp = null; + } + + if ( !OCA_Trash\Trashbin::restore($file, $filename, $timestamp) ) { + $error[] = $filename; + } else { + $success[$i]['filename'] = $file; + $success[$i]['timestamp'] = $timestamp; + $i++; + } + +} + +if ( $error ) { + $filelist = ''; + foreach ( $error as $e ) { + $filelist .= $e.', '; + } + OCP\JSON::error(array("data" => array("message" => "Couldn't restore ".rtrim($filelist,', '), "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 new file mode 100644 index 00000000000..3741d42c781 --- /dev/null +++ b/apps/files_trashbin/appinfo/app.php @@ -0,0 +1,7 @@ +<?php + +OC::$CLASSPATH['OCA_Trash\Hooks'] = 'apps/files_trashbin/lib/hooks.php';
+OC::$CLASSPATH['OCA_Trash\Trashbin'] = 'apps/files_trashbin/lib/trash.php';
+ +
+OCP\Util::connectHook('OC_Filesystem', 'delete', "OCA_Trash\Hooks", "remove_hook"); diff --git a/apps/files_trashbin/appinfo/database.xml b/apps/files_trashbin/appinfo/database.xml new file mode 100644 index 00000000000..1144a1c9a97 --- /dev/null +++ b/apps/files_trashbin/appinfo/database.xml @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<database> + + <name>*dbname*</name> + <create>true</create> + <overwrite>false</overwrite> + + <charset>utf8</charset> + + <table> + + <name>*dbprefix*files_trash</name> + + <declaration> + + <field> + <name>id</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>50</length> + </field> + + <field> + <name>user</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>50</length> + </field> + + <field> + <name>timestamp</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>12</length> + </field> + + <field> + <name>location</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>200</length> + </field> + + <field> + <name>type</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>4</length> + </field> + + <field> + <name>mime</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>30</length> + </field> + + <index> + <name>id_index</name> + <field> + <name>id</name> + <sorting>ascending</sorting> + </field> + </index> + + <index> + <name>timestamp_index</name> + <field> + <name>timestamp</name> + <sorting>ascending</sorting> + </field> + </index> + + <index> + <name>user_index</name> + <field> + <name>user</name> + <sorting>ascending</sorting> + </field> + </index> + + </declaration> + + </table> + +</database> diff --git a/apps/files_trashbin/appinfo/info.xml b/apps/files_trashbin/appinfo/info.xml new file mode 100644 index 00000000000..9b486126361 --- /dev/null +++ b/apps/files_trashbin/appinfo/info.xml @@ -0,0 +1,14 @@ +<?xml version="1.0"?> +<info> + <id>files_trashbin</id> + <name>Trash</name> + <description>Trash bin</description> + <licence>AGPL</licence> + <author>Bjoern Schiessle</author> + <shipped>true</shipped> + <require>4.9</require> + <default_enable/> + <types> + <filesystem/> + </types> +</info> diff --git a/apps/files_trashbin/appinfo/version b/apps/files_trashbin/appinfo/version new file mode 100644 index 00000000000..49d59571fbf --- /dev/null +++ b/apps/files_trashbin/appinfo/version @@ -0,0 +1 @@ +0.1 diff --git a/apps/files_trashbin/download.php b/apps/files_trashbin/download.php new file mode 100644 index 00000000000..665697dca5f --- /dev/null +++ b/apps/files_trashbin/download.php @@ -0,0 +1,51 @@ +<?php + +/** +* ownCloud - trash bin +* +* @author Bjoern Schiessle +* @copyright 2013 Bjoern Schiessle schiessle@owncloud.com +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* 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 <http://www.gnu.org/licenses/>. +* +*/ + +// Check if we are a user +OCP\User::checkLoggedIn(); + +$filename = $_GET["file"]; + +$view = new OC_FilesystemView('/'.\OCP\User::getUser().'/files_trashbin'); + +if(!$view->file_exists($filename)) { + header("HTTP/1.0 404 Not Found"); + $tmpl = new OCP\Template( '', '404', 'guest' ); + $tmpl->assign('file', $filename); + $tmpl->printPage(); + exit; +} + +$ftype=$view->getMimeType( $filename ); + +header('Content-Type:'.$ftype);if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) { + header( 'Content-Disposition: attachment; filename="' . rawurlencode( basename($filename) ) . '"' ); +} else { + header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode( basename($filename) ) + . '; filename="' . rawurlencode( basename($filename) ) . '"' ); +} +OCP\Response::disableCaching(); +header('Content-Length: '. $view->filesize($filename)); + +OC_Util::obEnd(); +$view->readfile( $filename ); diff --git a/apps/files_trashbin/index.php b/apps/files_trashbin/index.php new file mode 100644 index 00000000000..46a601cfdde --- /dev/null +++ b/apps/files_trashbin/index.php @@ -0,0 +1,100 @@ +<?php + +// Check if we are a user
+OCP\User::checkLoggedIn(); + +OCP\Util::addScript('files_trashbin', 'trash'); +OCP\Util::addScript('files_trashbin', 'disableDefaultActions'); +OCP\Util::addScript('files', 'fileactions'); +$tmpl = new OCP\Template('files_trashbin', 'index', 'user'); + +$user = \OCP\User::getUser(); +$view = new OC_Filesystemview('/'.$user.'/files_trashbin'); + +OCP\Util::addStyle('files', 'files'); +OCP\Util::addScript('files', 'filelist'); + +$dir = isset($_GET['dir']) ? stripslashes($_GET['dir']) : ''; + +if ($dir) { + $dirlisting = true; + $view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_trashbin');
+ $fullpath = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath($dir); + $dirContent = opendir($fullpath); + $i = 0; + while($entryName = readdir($dirContent)) { + if ( $entryName != '.' && $entryName != '..' ) { + $pos = strpos($dir.'/', '/', 1); + $tmp = substr($dir, 0, $pos); + $pos = strrpos($tmp, '.d'); + $timestamp = substr($tmp,$pos+2); + $result[] = array( + 'id' => $entryName, + 'timestamp' => $timestamp, + 'mime' => $view->getMimeType($dir.'/'.$entryName), + 'type' => $view->is_dir($dir.'/'.$entryName) ? 'dir' : 'file', + 'location' => $dir, + ); + }
+ } + closedir($fullpath); + +} else { + $dirlisting = false; + $query = \OC_DB::prepare('SELECT id,location,timestamp,type,mime FROM *PREFIX*files_trash WHERE user=?'); + $result = $query->execute(array($user))->fetchAll(); +} + +$files = array(); +foreach ($result as $r) { + $i = array(); + $i['name'] = $r['id']; + $i['date'] = OCP\Util::formatDate($r['timestamp']); + $i['timestamp'] = $r['timestamp']; + $i['mimetype'] = $r['mime']; + $i['type'] = $r['type']; + if ($i['type'] == 'file') { + $fileinfo = pathinfo($r['id']); + $i['basename'] = $fileinfo['filename']; + $i['extension'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : ''; + } + $i['directory'] = $r['location']; + if ($i['directory'] == '/') { + $i['directory'] = ''; + } + $i['permissions'] = OCP\PERMISSION_READ; + $files[] = $i; +} + +// Make breadcrumb
+$breadcrumb = array(array('dir' => '', 'name' => 'Trash'));
+$pathtohere = '';
+foreach (explode('/', $dir) as $i) {
+ if ($i != '') { + if ( preg_match('/^(.+)\.d[0-9]+$/', $i, $match) ) { + $name = $match[1]; + } else { + $name = $i; + }
+ $pathtohere .= '/' . $i;
+ $breadcrumb[] = array('dir' => $pathtohere, 'name' => $name);
+ }
+} + +$breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '');
+$breadcrumbNav->assign('breadcrumb', $breadcrumb, false);
+$breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files_trashbin', 'index.php') . '?dir=', false); + +$list = new OCP\Template('files_trashbin', 'part.list', ''); +$list->assign('files', $files, false); +$list->assign('baseURL', OCP\Util::linkTo('files_trashbin', 'index.php'). '?dir='.$dir, false);
+$list->assign('downloadURL', OCP\Util::linkTo('files_trashbin', 'download.php') . '?file='.$dir, false); +$list->assign('disableSharing', true); +$list->assign('dirlisting', $dirlisting); +$list->assign('disableDownloadActions', true); +$tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage(), false); +$tmpl->assign('fileList', $list->fetchPage(), false); +$tmpl->assign('files', $files); +$tmpl->assign('dir', OC_Filesystem::normalizePath($view->getAbsolutePath())); + +$tmpl->printPage(); diff --git a/apps/files_trashbin/js/disableDefaultActions.js b/apps/files_trashbin/js/disableDefaultActions.js new file mode 100644 index 00000000000..56b95407dd3 --- /dev/null +++ b/apps/files_trashbin/js/disableDefaultActions.js @@ -0,0 +1,3 @@ +/* disable download and sharing actions */
+var disableDownloadActions = true;
+var disableSharing = true;
diff --git a/apps/files_trashbin/js/trash.js b/apps/files_trashbin/js/trash.js new file mode 100644 index 00000000000..3ad0ab04fb9 --- /dev/null +++ b/apps/files_trashbin/js/trash.js @@ -0,0 +1,158 @@ + +$(document).ready(function() { + + if (typeof FileActions !== 'undefined') { + FileActions.register('all', 'Restore', OC.PERMISSION_READ, OC.imagePath('core', 'actions/undelete.png'), function(filename) { + var tr=$('tr').filterAttr('data-file', filename); + var spinner = '<img class="move2trash" title="'+t('files_trashbin', 'perform restore operation')+'" src="'+ OC.imagePath('core', 'loader.gif') +'"></a>'; + var undeleteAction = $('tr').filterAttr('data-file',filename).children("td.date"); + undeleteAction[0].innerHTML = undeleteAction[0].innerHTML+spinner; + $.post(OC.filePath('files_trashbin','ajax','undelete.php'), + {files:tr.attr('data-file'), dirlisting:tr.attr('data-dirlisting') }, + function(result){ + for (var i = 0; i < result.data.success.length; i++) { + var row = document.getElementById(result.data.success[i].filename); + row.parentNode.removeChild(row); + } + if (result.status != 'success') { + OC.dialogs.alert(result.data.message, 'Error'); + } + }); + + }); + }; + + // Sets the select_all checkbox behaviour : + $('#select_all').click(function() { + if($(this).attr('checked')){ + // Check all + $('td.filename input:checkbox').attr('checked', true); + $('td.filename input:checkbox').parent().parent().addClass('selected'); + }else{ + // Uncheck all + $('td.filename input:checkbox').attr('checked', false); + $('td.filename input:checkbox').parent().parent().removeClass('selected'); + } + processSelection(); + }); + + $('td.filename input:checkbox').live('change',function(event) { + if (event.shiftKey) { + var last = $(lastChecked).parent().parent().prevAll().length; + var first = $(this).parent().parent().prevAll().length; + var start = Math.min(first, last); + var end = Math.max(first, last); + var rows = $(this).parent().parent().parent().children('tr'); + for (var i = start; i < end; i++) { + $(rows).each(function(index) { + if (index == i) { + var checkbox = $(this).children().children('input:checkbox'); + $(checkbox).attr('checked', 'checked'); + $(checkbox).parent().parent().addClass('selected'); + } + }); + } + } + var selectedCount=$('td.filename input:checkbox:checked').length; + $(this).parent().parent().toggleClass('selected'); + if(!$(this).attr('checked')){ + $('#select_all').attr('checked',false); + }else{ + if(selectedCount==$('td.filename input:checkbox').length){ + $('#select_all').attr('checked',true); + } + } + processSelection(); + }); + + $('.undelete').click('click',function(event) { + var spinner = '<img class="move2trash" title="'+t('files_trashbin', 'perform undelete operation')+'" src="'+ OC.imagePath('core', 'loader.gif') +'"></a>'; + var files=getSelectedFiles('file'); + var fileslist=files.join(';'); + var dirlisting=getSelectedFiles('dirlisting')[0]; + + for (var i in files) { + var undeleteAction = $('tr').filterAttr('data-file',files[i]).children("td.date"); + undeleteAction[0].innerHTML = undeleteAction[0].innerHTML+spinner; + } + + $.post(OC.filePath('files_trashbin','ajax','undelete.php'), + {files:fileslist, dirlisting:dirlisting}, + function(result){ + for (var i = 0; i < result.data.success.length; i++) { + var row = document.getElementById(result.data.success[i].filename); + row.parentNode.removeChild(row); + } + if (result.status != 'success') { + OC.dialogs.alert(result.data.message, 'Error'); + } + }); + }); + + +}); + +function processSelection(){ + var selected=getSelectedFiles(); + var selectedFiles=selected.filter(function(el){return el.type=='file'}); + var selectedFolders=selected.filter(function(el){return el.type=='dir'}); + if(selectedFiles.length==0 && selectedFolders.length==0) { + $('#headerName>span.name').text(t('files','Name')); + $('#modified').text(t('files','Deleted')); + $('table').removeClass('multiselect'); + $('.selectedActions').hide(); + } + else { + $('.selectedActions').show(); + var selection=''; + if(selectedFolders.length>0){ + if(selectedFolders.length==1){ + selection+=t('files','1 folder'); + }else{ + selection+=t('files','{count} folders',{count: selectedFolders.length}); + } + if(selectedFiles.length>0){ + selection+=' & '; + } + } + if(selectedFiles.length>0){ + if(selectedFiles.length==1){ + selection+=t('files','1 file'); + }else{ + selection+=t('files','{count} files',{count: selectedFiles.length}); + } + } + $('#headerName>span.name').text(selection); + $('#modified').text(''); + $('table').addClass('multiselect'); + } +} + +/** + * @brief get a list of selected files + * @param string property (option) the property of the file requested + * @return array + * + * possible values for property: name, mime, size and type + * if property is set, an array with that property for each file is returnd + * if it's ommited an array of objects with all properties is returned + */ +function getSelectedFiles(property){ + var elements=$('td.filename input:checkbox:checked').parent().parent(); + var files=[]; + elements.each(function(i,element){ + var file={ + name:$(element).attr('data-filename'), + file:$(element).attr('data-file'), + timestamp:$(element).attr('data-timestamp'), + type:$(element).attr('data-type'), + dirlisting:$(element).attr('data-dirlisting') + }; + if(property){ + files.push(file[property]); + }else{ + files.push(file); + } + }); + return files; +}
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/.gitkeep b/apps/files_trashbin/l10n/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/apps/files_trashbin/l10n/.gitkeep diff --git a/apps/files_trashbin/lib/hooks.php b/apps/files_trashbin/lib/hooks.php new file mode 100644 index 00000000000..d3bee105b51 --- /dev/null +++ b/apps/files_trashbin/lib/hooks.php @@ -0,0 +1,45 @@ +<?php +/**
+ * ownCloud - trash bin
+ *
+ * @author Bjoern Schiessle
+ * @copyright 2013 Bjoern Schiessle schiessle@owncloud.com
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ */ + +/** + * This class contains all hooks. + */ + +namespace OCA_Trash; + +class Hooks { + + /** + * @brief Copy files to trash bin + * @param array + * + * This function is connected to the delete signal of OC_Filesystem + * to copy the file to the trash bin + */ + public static function remove_hook($params) { + + if ( \OCP\App::isEnabled('files_trashbin') ) { + $path = $params['path']; + Trashbin::move2trash($path); + } + } +} diff --git a/apps/files_trashbin/lib/trash.php b/apps/files_trashbin/lib/trash.php new file mode 100644 index 00000000000..a7eff3d44e0 --- /dev/null +++ b/apps/files_trashbin/lib/trash.php @@ -0,0 +1,264 @@ +<?php +/**
+ * ownCloud - trash bin
+ *
+ * @author Bjoern Schiessle
+ * @copyright 2013 Bjoern Schiessle schiessle@owncloud.com
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ */
+ +namespace OCA_Trash;
+
+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) + /** + * move file to the trash bin + * + * @param $file_path path to the deleted file/directory relative to the files root directory + */ + public static function move2trash($file_path) { + $user = \OCP\User::getUser(); + $view = new \OC_FilesystemView('/'. $user);
+ if (!$view->is_dir('files_trashbin')) {
+ $view->mkdir('files_trashbin');
+ $view->mkdir("versions_trashbin");
+ }
+
+ $path_parts = pathinfo($file_path);
+
+ $deleted = $path_parts['basename'];
+ $location = $path_parts['dirname'];
+ $timestamp = time();
+ $mime = $view->getMimeType('files'.$file_path);
+
+ if ( $view->is_dir('files'.$file_path) ) {
+ $type = 'dir';
+ } else {
+ $type = 'file';
+ }
+ + 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)); + if ( !$result ) { // if file couldn't be added to the database than also don't store it in the trash bin. + $view->deleteAll('files_trashbin/'.$deleted.'.d'.$timestamp); + \OC_Log::write('files_trashbin', 'trash bin database couldn\'t be updated', \OC_log::ERROR); + return; + }
+
+ if ( \OCP\App::isEnabled('files_versions') ) {
+ if ( $view->is_dir('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) {
+ $view->rename('files_versions'.$v['path'].'.v'.$v['version'], 'versions_trashbin/'. $deleted.'.v'.$v['version'].'.d'.$timestamp);
+ }
+ }
+ } + } else { + \OC_Log::write('files_trashbin', 'Couldn\'t move '.$file_path.' to the trash bin' , \OC_log::ERROR); + } + + self::expire();
+ } + + + /** + * restore files from trash bin + * @param $file path to the deleted file + * @param $filename name of the file + * @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 ( $timestamp ) { + $query = \OC_DB::prepare('SELECT location,type FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?');
+ $result = $query->execute(array($user,$filename,$timestamp))->fetchAll(); + if ( count($result) != 1 ) { + \OC_Log::write('files_trashbin', 'trash bin database inconsistent!', \OC_Log::ERROR); + return false; + } + + // if location no longer exists, restore file in the root directory
+ $location = $result[0]['location'];
+ if ( $result[0]['location'] != '/' && + (!$view->is_dir('files'.$result[0]['location']) || + !$view->isUpdatable('files'.$result[0]['location'])) ) {
+ $location = '';
+ } + } else { + $path_parts = pathinfo($filename); + $result[] = array( + 'location' => $path_parts['dirname'], + 'type' => $view->is_dir('/files_trashbin/'.$file) ? 'dir' : 'files', + ); + $location = ''; + } + + $source = \OC_Filesystem::normalizePath('files_trashbin/'.$file); + $target = \OC_Filesystem::normalizePath('files/'.$location.'/'.$filename); + + // we need a extension in case a file/dir with the same name already exists + $ext = self::getUniqueExtension($location, $filename, $view); + $mtime = $view->filemtime($source); + if( $view->rename($source, $target.$ext) ) { + $view->touch($target.$ext, $mtime); + // 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' ) {
+ $view->rename(\OC_Filesystem::normalizePath('versions_trashbin/'. $file), \OC_Filesystem::normalizePath('files_versions/'.$location.'/'.$filename.$ext));
+ } else if ( $versions = self::getVersionsFromTrash($file, $timestamp) ) {
+ foreach ($versions as $v) { + if ($timestamp ) { + $view->rename('versions_trashbin/'.$filename.'.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); + }
+ }
+ }
+ } + + if ( $timestamp ) { + $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?');
+ $query->execute(array($user,$filename,$timestamp)); + } + + return true; + } else { + \OC_Log::write('files_trashbin', 'Couldn\'t restore file from trash bin, '.$filename , \OC_log::ERROR); + } + + return false; + } + + /**
+ * clean up the trash bin
+ */
+ private static function expire() { + + $view = new \OC_FilesystemView('/'.\OCP\User::getUser()); + $user = \OCP\User::getUser(); + + $query = \OC_DB::prepare('SELECT location,type,id,timestamp FROM *PREFIX*files_trash WHERE user=?');
+ $result = $query->execute(array($user))->fetchAll(); + + $retention_obligation = \OC_Config::getValue('trashbin_retention_obligation', self::DEFAULT_RETENTION_OBLIGATION); + + $limit = time() - ($retention_obligation * 86400); + + foreach ( $result as $r ) { + $timestamp = $r['timestamp']; + $filename = $r['id']; + if ( $r['timestamp'] < $limit ) { + $view->unlink('files_trashbin/'.$filename.'.d'.$timestamp); + if ($r['type'] == 'dir') { + $view->unlink('versions_trashbin/'.$filename.'.d'.$timestamp); + } else if ( $versions = self::getVersionsFromTrash($filename, $timestamp) ) { + foreach ($versions as $v) { + $view->unlink('versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp); + } + } + } + } + + $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND timestamp<?');
+ $query->execute(array($user,$limit));
+ } + + /** + * recursive copy to copy a whole directory + * + * @param $source source path, relative to the users files directory + * @param $destination destination path relative to the users root directoy + * @param $view file view for the users root directory + */ + private static function copy_recursive( $source, $destination, $view ) { + 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); + } else { + $view->copy( 'files'.$pathDir, $destination . '/' . $i['name'] ); + $view->touch($destination . '/' . $i['name'], $view->filemtime('files'.$pathDir)); + } + } + } else { + $view->copy( 'files'.$source, $destination ); + $view->touch($destination, $view->filemtime('files'.$source)); + } + } + + /** + * find all versions which belong to the file we want to restore + * @param $filename name of the file which should be restored + * @param $timestamp timestamp when the file was deleted + */ + 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();
+ + if ($timestamp ) { + // fetch for old versions
+ $matches = glob( $versionsName.'.v*.d'.$timestamp ); + $offset = -strlen($timestamp)-2; + } else { + $matches = glob( $versionsName.'.v*' ); + }
+
+ foreach( $matches as $ma ) { + if ( $timestamp ) { + $parts = explode( '.v', substr($ma, 0, $offset) );
+ $versions[] = ( end( $parts ) ); + } else { + $parts = explode( '.v', $ma );
+ $versions[] = ( end( $parts ) ); + } + } + return $versions; + } + + /** + * find unique extension for restored file if a file with the same name already exists + * @param $location where the file should be restored + * @param $filename name of the file + * @param $view filesystem view relative to users root directory + * @return string with unique extension + */ + private static function getUniqueExtension($location, $filename, $view) { + $ext = '';
+ if ( $view->file_exists('files'.$location.'/'.$filename) ) {
+ $tmpext = '.restored';
+ $ext = $tmpext;
+ $i = 1;
+ while ( $view->file_exists('files'.$location.'/'.$filename.$ext) ) {
+ $ext = $tmpext.$i;
+ $i++;
+ }
+ } + return $ext; + } + +}
diff --git a/apps/files_trashbin/templates/index.php b/apps/files_trashbin/templates/index.php new file mode 100644 index 00000000000..c3e51b4becd --- /dev/null +++ b/apps/files_trashbin/templates/index.php @@ -0,0 +1,34 @@ +<!--[if IE 8]><style>input[type="checkbox"]{padding:0;}table td{position:static !important;}</style><![endif]--> +<div id="controls"> + <?php echo($_['breadcrumb']); ?> + <div id="file_action_panel"></div> +</div> +<div id='notification'></div> + +<?php if (isset($_['files']) && count($_['files'])==0):?> + <div id="emptyfolder"><?php echo $l->t('Nothing in here. Your trash bin is empty!')?></div> +<?php endif; ?> + +<table> + <thead> + <tr> + <th id='headerName'> + <input type="checkbox" id="select_all" /> + <span class='name'><?php echo $l->t( 'Name' ); ?></span> + <span class='selectedActions'> + <a href="" class="undelete"> + <img class="svg" alt="<?php echo $l->t( 'Restore' ); ?>" + src="<?php echo OCP\image_path("core", "actions/undelete.png"); ?>" /> + <?php echo $l->t('Restore')?> + </a> + </span> + </th> + <th id="headerDate"> + <span id="modified"><?php echo $l->t( 'Deleted' ); ?></span> + </th> + </tr> + </thead> + <tbody id="fileList"> + <?php echo($_['fileList']); ?> + </tbody> +</table> diff --git a/apps/files_trashbin/templates/part.list.php b/apps/files_trashbin/templates/part.list.php new file mode 100644 index 00000000000..fe8a71f44e6 --- /dev/null +++ b/apps/files_trashbin/templates/part.list.php @@ -0,0 +1,76 @@ +<input type="hidden" id="disableSharing" data-status="<?php echo $_['disableSharing']; ?>"> +<?php foreach($_['files'] as $file): + $simple_file_size = OCP\simple_file_size($file['size']); + // the bigger the file, the darker the shade of grey; megabytes*2 + $simple_size_color = intval(200-$file['size']/(1024*1024)*2); + if($simple_size_color<0) $simple_size_color = 0; + $relative_deleted_date = OCP\relative_modified_date($file['timestamp']); + // the older the file, the brighter the shade of grey; days*14 + $relative_date_color = round((time()-$file['mtime'])/60/60/24*14); + if($relative_date_color>200) $relative_date_color = 200; + $name = str_replace('+', '%20', urlencode($file['name'])); + $name = str_replace('%2F', '/', $name); + $directory = str_replace('+', '%20', urlencode($file['directory'])); + $directory = str_replace('%2F', '/', $directory); ?> + <tr data-filename="<?php echo $file['name'];?>" + data-type="<?php echo ($file['type'] == 'dir')?'dir':'file'?>" + data-mime="<?php echo $file['mimetype']?>" + data-permissions='<?php echo $file['permissions']; ?>' + <?php if ( $_['dirlisting'] ): ?> + id="<?php echo $file['directory'].'/'.$file['name'];?>" + data-file="<?php echo $file['directory'].'/'.$file['name'];?>" + data-timestamp='' + data-dirlisting=1 + <?php else: ?> + id="<?php echo $file['name'].'.d'.$file['timestamp'];?>" + data-file="<?php echo $file['name'].'.d'.$file['timestamp'];?>" + data-timestamp='<?php echo $file['timestamp'];?>' + data-dirlisting=0 + <?php endif; ?>> + <td class="filename svg" + <?php if($file['type'] == 'dir'): ?> + style="background-image:url(<?php echo OCP\mimetype_icon('dir'); ?>)" + <?php else: ?> + style="background-image:url(<?php echo OCP\mimetype_icon($file['mimetype']); ?>)" + <?php endif; ?> + > + <?php if(!isset($_['readonly']) || !$_['readonly']): ?><input type="checkbox" /><?php endif; ?> + <?php if($file['type'] == 'dir'): ?> + <?php if( $_['dirlisting'] ): ?> + <a class="name" href="<?php echo $_['baseURL'].'/'.$name; ?>" title=""> + <?php else: ?> + <a class="name" href="<?php echo $_['baseURL'].'/'.$name.'.d'.$file['timestamp']; ?>" title=""> + <?php endif; ?> + <?php else: ?> + <?php if( $_['dirlisting'] ): ?> + <a class="name" href="<?php echo $_['downloadURL'].'/'.$name; ?>" title=""> + <?php else: ?> + <a class="name" href="<?php echo $_['downloadURL'].'/'.$name.'.d'.$file['timestamp'];?>" title=""> + <?php endif; ?> + <?php endif; ?> + <span class="nametext"> + <?php if($file['type'] == 'dir'):?> + <?php echo htmlspecialchars($file['name']);?> + <?php else:?> + <?php echo htmlspecialchars($file['basename']);?><span + class='extension'><?php echo $file['extension'];?></span> + <?php endif;?> + </span> + <?php if($file['type'] == 'dir'):?> + <span class="uploadtext" currentUploads="0"> + </span> + <?php endif;?> + </a> + </td> + <td class="date"> + <span class="modified" + title="<?php echo $file['date']; ?>" + style="color:rgb(<?php echo $relative_date_color.',' + .$relative_date_color.',' + .$relative_date_color ?>)"> + <?php echo $relative_deleted_date; ?> + </span> + </td> + </tr> +<?php endforeach; +
\ No newline at end of file diff --git a/apps/files_versions/appinfo/app.php b/apps/files_versions/appinfo/app.php index afc0a67edba..edd0a2f7022 100644 --- a/apps/files_versions/appinfo/app.php +++ b/apps/files_versions/appinfo/app.php @@ -12,5 +12,5 @@ OCP\Util::addscript('files_versions', 'versions'); // Listen to write signals OCP\Util::connectHook('OC_Filesystem', 'write', "OCA_Versions\Hooks", "write_hook"); // Listen to delete and rename signals -OCP\Util::connectHook('OC_Filesystem', 'delete', "OCA_Versions\Hooks", "remove_hook"); +OCP\Util::connectHook('OC_Filesystem', 'post-delete', "OCA_Versions\Hooks", "remove_hook"); OCP\Util::connectHook('OC_Filesystem', 'rename', "OCA_Versions\Hooks", "rename_hook");
\ No newline at end of file diff --git a/apps/files_versions/appinfo/info.xml b/apps/files_versions/appinfo/info.xml index e4e5a365d51..0155f8e830f 100644 --- a/apps/files_versions/appinfo/info.xml +++ b/apps/files_versions/appinfo/info.xml @@ -4,7 +4,7 @@ <name>Versions</name> <licence>AGPL</licence> <author>Frank Karlitschek</author> - <require>4.9</require> + <require>4.91</require> <shipped>true</shipped> <description>Versioning of files</description> <types> diff --git a/apps/files_versions/l10n/lb.php b/apps/files_versions/l10n/lb.php new file mode 100644 index 00000000000..3aa625ffc97 --- /dev/null +++ b/apps/files_versions/l10n/lb.php @@ -0,0 +1,5 @@ +<?php $TRANSLATIONS = array( +"History" => "Historique", +"Files Versioning" => "Fichier's Versionéierung ", +"Enable" => "Aschalten" +); diff --git a/apps/files_versions/lib/hooks.php b/apps/files_versions/lib/hooks.php index 5fb9dc3c3c5..5cefc532895 100644 --- a/apps/files_versions/lib/hooks.php +++ b/apps/files_versions/lib/hooks.php @@ -21,9 +21,9 @@ class Hooks { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { - $versions = new Storage( new \OC_FilesystemView('') ); + $versions = new Storage( new \OC\Files\View('') ); - $path = $params[\OC_Filesystem::signal_param_path]; + $path = $params[\OC\Files\Filesystem::signal_param_path]; if($path<>'') $versions->store( $path ); @@ -39,15 +39,15 @@ class Hooks { * cleanup the versions directory if the actual file gets deleted */ public static function remove_hook($params) { - if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
-
- $versions = new Storage( new \OC_FilesystemView('') );
-
- $path = $params[\OC_Filesystem::signal_param_path];
-
- if($path<>'') $versions->delete( $path );
-
- }
+ if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { + + $versions = new Storage( new \OC_FilesystemView('') ); + + $path = $params[\OC\Files\Filesystem::signal_param_path]; + + if($path<>'') $versions->delete( $path ); + + } } /** @@ -58,15 +58,15 @@ class Hooks { * of the stored versions along the actual file */ public static function rename_hook($params) { - if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
-
- $versions = new Storage( new \OC_FilesystemView('') );
-
+ if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { + + $versions = new Storage( new \OC_FilesystemView('') ); + $oldpath = $params['oldpath']; - $newpath = $params['newpath'];
-
- if($oldpath<>'' && $newpath<>'') $versions->rename( $oldpath, $newpath );
-
+ $newpath = $params['newpath']; + + if($oldpath<>'' && $newpath<>'') $versions->rename( $oldpath, $newpath ); + } } diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index 48be5e223ac..003d548d2b2 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -23,15 +23,15 @@ class Storage { private static $max_versions_per_interval = array( 1 => array('intervalEndsAfter' => 10, //first 10sec, one version every 2sec 'step' => 2), - 2 => array('intervalEndsAfter' => 60, //next minute, one version every 10sec
+ 2 => array('intervalEndsAfter' => 60, //next minute, one version every 10sec 'step' => 10), 3 => array('intervalEndsAfter' => 3600, //next hour, one version every minute 'step' => 60), 4 => array('intervalEndsAfter' => 86400, //next 24h, one version every hour 'step' => 3600), - 5 => array('intervalEndsAfter' => 2592000, //next 30days, one version per day
+ 5 => array('intervalEndsAfter' => 2592000, //next 30days, one version per day 'step' => 86400), - 6 => array('intervalEndsAfter' => -1, //until the end one version per week
+ 6 => array('intervalEndsAfter' => -1, //until the end one version per week 'step' => 604800), ); @@ -58,8 +58,8 @@ class Storage { public function store($filename) { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { list($uid, $filename) = self::getUidAndFilename($filename); - $files_view = new \OC_FilesystemView('/'.$uid .'/files'); - $users_view = new \OC_FilesystemView('/'.$uid); + $files_view = new \OC\Files\View('/'.\OCP\User::getUser() .'/files'); + $users_view = new \OC\Files\View('/'.\OCP\User::getUser()); //check if source file already exist as version to avoid recursions. // todo does this check work? @@ -86,8 +86,8 @@ class Storage { // store a new version of a file $result = $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename)); - if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
- $versionsSize = self::calculateSize($uid);
+ if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) { + $versionsSize = self::calculateSize($uid); } $versionsSize += $users_view->filesize('files'.$filename); @@ -105,42 +105,42 @@ class Storage { * Delete versions of a file */ public static function delete($filename) { - list($uid, $filename) = self::getUidAndFilename($filename);
+ list($uid, $filename) = self::getUidAndFilename($filename); $versions_fileview = new \OC_FilesystemView('/'.$uid .'/files_versions'); -
- $abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$filename.'.v';
- if( ($versions = self::getVersions($filename)) ) {
- if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
- $versionsSize = self::calculateSize($uid);
- }
- foreach ($versions as $v) {
- unlink($abs_path . $v['version']);
- $versionsSize -= $v['size'];
- }
- \OCP\Config::setAppValue('files_versions', 'size', $versionsSize);
+ + $abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$filename.'.v'; + if( ($versions = self::getVersions($filename)) ) { + if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) { + $versionsSize = self::calculateSize($uid); + } + foreach ($versions as $v) { + unlink($abs_path . $v['version']); + $versionsSize -= $v['size']; + } + \OCP\Config::setAppValue('files_versions', 'size', $versionsSize); } } - /**
- * rename versions of a file
- */
- public static function rename($oldpath, $newpath) {
+ /** + * rename versions of a file + */ + public static function rename($oldpath, $newpath) { list($uid, $oldpath) = self::getUidAndFilename($oldpath); - list($uidn, $newpath) = self::getUidAndFilename($newpath);
+ list($uidn, $newpath) = self::getUidAndFilename($newpath); $versions_view = new \OC_FilesystemView('/'.$uid .'/files_versions'); $files_view = new \OC_FilesystemView('/'.$uid .'/files'); - $abs_newpath = \OCP\Config::getSystemValue('datadirectory').$versions_view->getAbsolutePath('').$newpath;
-
+ $abs_newpath = \OCP\Config::getSystemValue('datadirectory').$versions_view->getAbsolutePath('').$newpath; + if ( $files_view->is_dir($oldpath) && $versions_view->is_dir($oldpath) ) { $versions_view->rename($oldpath, $newpath); - } else if ( ($versions = Storage::getVersions($oldpath)) ) {
- $info=pathinfo($abs_newpath);
- if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true);
- $versions = Storage::getVersions($oldpath);
+ } else if ( ($versions = Storage::getVersions($oldpath)) ) { + $info=pathinfo($abs_newpath); + if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true); + $versions = Storage::getVersions($oldpath); foreach ($versions as $v) { - $versions_view->rename($oldpath.'.v'.$v['version'], $newpath.'.v'.$v['version']);
- }
- }
+ $versions_view->rename($oldpath.'.v'.$v['version'], $newpath.'.v'.$v['version']); + } + } } /** @@ -150,7 +150,7 @@ class Storage { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { list($uid, $filename) = self::getUidAndFilename($filename); - $users_view = new \OC_FilesystemView('/'.$uid); + $users_view = new \OC\Files\View('/'.$uid); $versionCreated = false; //first create a new version @@ -184,7 +184,7 @@ class Storage { public static function getVersions( $filename, $count = 0 ) { if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) { list($uid, $filename) = self::getUidAndFilename($filename); - $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); + $versions_fileview = new \OC\Files\View('/' . \OCP\User::getUser() . '/files_versions'); $versionsName = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); $versions = array(); @@ -202,7 +202,7 @@ class Storage { $key = $version.'#'.$filename; $versions[$key]['cur'] = 0; $versions[$key]['version'] = $version; - $versions[$key]['path'] = $filename;
+ $versions[$key]['path'] = $filename; $versions[$key]['size'] = $versions_fileview->filesize($filename.'.v'.$version); // if file with modified date exists, flag it in array as currently enabled version @@ -236,29 +236,29 @@ class Storage { } - /**
- * @brief get the size of all stored versions from a given user
- * @param $uid id from the user
- * @return size of vesions
- */
- private static function calculateSize($uid) {
- if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
- $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
- $versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
-
- $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
-
+ /** + * @brief get the size of all stored versions from a given user + * @param $uid id from the user + * @return size of vesions + */ + private static function calculateSize($uid) { + if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) { + $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); + $versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath(''); + + $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST); + $size = 0; -
- foreach ($iterator as $path) {
- if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) {
+ + foreach ($iterator as $path) { + if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) { $relpath = substr($path, strlen($versionsRoot)-1); - $size += $versions_fileview->filesize($relpath);
- }
+ $size += $versions_fileview->filesize($relpath); + } } - return $size;
- }
+ return $size; + } } /** @@ -267,11 +267,11 @@ class Storage { * @return array with contains two arrays 'all' which contains all versions sorted by age and 'by_file' which contains all versions sorted by filename */ private static function getAllVersions($uid) { - if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
+ if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) { $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); $versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath(''); - $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
+ $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST); $versions = array(); @@ -280,7 +280,7 @@ class Storage { $relpath = substr($path, strlen($versionsRoot)-1); $versions[$match[1].'#'.$relpath] = array('path' => $relpath, 'timestamp' => $match[1]); } - }
+ } ksort($versions); @@ -288,20 +288,20 @@ class Storage { $result = array(); - foreach( $versions as $key => $value ) {
+ foreach( $versions as $key => $value ) { $i++; $size = $versions_fileview->filesize($value['path']); $filename = substr($value['path'], 0, -strlen($value['timestamp'])-2); -
+ $result['all'][$key]['version'] = $value['timestamp']; - $result['all'][$key]['path'] = $filename;
+ $result['all'][$key]['path'] = $filename; $result['all'][$key]['size'] = $size; $filename = substr($value['path'], 0, -strlen($value['timestamp'])-2); $result['by_file'][$filename][$key]['version'] = $value['timestamp']; - $result['by_file'][$filename][$key]['path'] = $filename;
+ $result['by_file'][$filename][$key]['path'] = $filename; $result['by_file'][$filename][$key]['size'] = $size; -
+ } return $result; @@ -322,7 +322,7 @@ class Storage { $quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota')); } if ( $quota == null ) { - $quota = \OC_Filesystem::free_space('/'); + $quota = \OC\Files\Filesystem::free_space('/'); } // make sure that we have the current size of the version history @@ -332,7 +332,7 @@ class Storage { } } - // calculate available space for version history
+ // calculate available space for version history $rootInfo = \OC_FileCache::get('', '/'. $uid . '/files'); $free = $quota-$rootInfo['size']; // remaining free space for user if ( $free > 0 ) { @@ -394,7 +394,7 @@ class Storage { $nextVersion = $prevTimestamp - $step; if ( Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] == -1 ) { $nextInterval = -1; - } else {
+ } else { $nextInterval = $time - Storage::$max_versions_per_interval[$interval]['intervalEndsAfter']; } $newInterval = true; // we changed the interval -> check same version with new interval diff --git a/apps/user_ldap/appinfo/info.xml b/apps/user_ldap/appinfo/info.xml index a7605775274..53269edfb34 100644 --- a/apps/user_ldap/appinfo/info.xml +++ b/apps/user_ldap/appinfo/info.xml @@ -7,7 +7,7 @@ This app is not compatible to the WebDAV user backend.</description> <licence>AGPL</licence> <author>Dominik Schmidt and Arthur Schiwon</author> - <require>4.9</require> + <require>4.91</require> <shipped>true</shipped> <types> <authentication/> diff --git a/apps/user_ldap/l10n/de.php b/apps/user_ldap/l10n/de.php index 89bda8af97f..efc8a80f8c7 100644 --- a/apps/user_ldap/l10n/de.php +++ b/apps/user_ldap/l10n/de.php @@ -1,8 +1,10 @@ <?php $TRANSLATIONS = array( "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Warnung:</b> Die Anwendungen user_ldap und user_webdavauth sind inkompatibel. Es kann demzufolge zu unerwarteten Verhalten kommen. Bitte Deinen Systemadministator eine der beiden Anwendungen zu deaktivieren.", +"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Warnung:</b> Da das PHP-Modul für LDAP ist nicht installiert, das Backend wird nicht funktionieren. Bitten Sie Ihren Systemadministrator das Modul zu installieren.", "Host" => "Host", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Du kannst das Protokoll auslassen, außer wenn Du SSL benötigst. Beginne dann mit ldaps://", "Base DN" => "Basis-DN", +"One Base DN per line" => "Ein Base DN pro Zeile", "You can specify Base DN for users and groups in the Advanced tab" => "Du kannst Basis-DN für Benutzer und Gruppen in dem \"Erweitert\"-Reiter konfigurieren", "User DN" => "Benutzer-DN", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "Der DN des Benutzers für LDAP-Bind, z.B.: uid=agent,dc=example,dc=com. Für anonymen Zugriff lasse DN und Passwort leer.", @@ -19,7 +21,9 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "ohne Platzhalter, z.B.: \"objectClass=posixGroup\"", "Port" => "Port", "Base User Tree" => "Basis-Benutzerbaum", +"One User Base DN per line" => "Ein Benutzer Base DN pro Zeile", "Base Group Tree" => "Basis-Gruppenbaum", +"One Group Base DN per line" => "Ein Gruppen Base DN pro Zeile", "Group-Member association" => "Assoziation zwischen Gruppe und Benutzer", "Use TLS" => "Nutze TLS", "Do not use it for SSL connections, it will fail." => "Verwende dies nicht für SSL-Verbindungen, es wird fehlschlagen.", diff --git a/apps/user_ldap/l10n/de_DE.php b/apps/user_ldap/l10n/de_DE.php index 1e816018386..843609f8b89 100644 --- a/apps/user_ldap/l10n/de_DE.php +++ b/apps/user_ldap/l10n/de_DE.php @@ -1,6 +1,6 @@ <?php $TRANSLATIONS = array( "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Warnung:</b> Die Anwendungen user_ldap und user_webdavauth sind inkompatibel. Es kann demzufolge zu unerwarteten Verhalten kommen. Bitten Sie Ihren Systemadministator eine der beiden Anwendungen zu deaktivieren.", -"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Warnung:</b> Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitten Sie Ihren Systemadministrator das Modul zu installieren.", +"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Warnung:</b> Da das PHP-Modul für LDAP ist nicht installiert, das Backend wird nicht funktionieren. Bitten Sie Ihren Systemadministrator das Modul zu installieren.", "Host" => "Host", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Sie können das Protokoll auslassen, außer wenn Sie SSL benötigen. Beginnen Sie dann mit ldaps://", "Base DN" => "Basis-DN", diff --git a/apps/user_ldap/l10n/es_AR.php b/apps/user_ldap/l10n/es_AR.php index 331bf8699f4..5d42ea94437 100644 --- a/apps/user_ldap/l10n/es_AR.php +++ b/apps/user_ldap/l10n/es_AR.php @@ -1,8 +1,10 @@ <?php $TRANSLATIONS = array( "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Advertencia:</b> Los Apps user_ldap y user_webdavauth son incompatibles. Puede que experimente un comportamiento inesperado. Pregunte al administrador del sistema para desactivar uno de ellos.", +"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Atención:</b> El módulo PHP LDAP no está instalado, este elemento no va a funcionar. Por favor, pedile al administrador que lo instale.", "Host" => "Servidor", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Podés omitir el protocolo, excepto si SSL es requerido. En ese caso, empezá con ldaps://", "Base DN" => "DN base", +"One Base DN per line" => "Una DN base por lÃnea", "You can specify Base DN for users and groups in the Advanced tab" => "Podés especificar el DN base para usuarios y grupos en la pestaña \"Avanzado\"", "User DN" => "DN usuario", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "El DN del usuario cliente con el que se hará la asociación, p.ej. uid=agente,dc=ejemplo,dc=com. Para acceso anónimo, dejá DN y contraseña vacÃos.", @@ -19,7 +21,9 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "Sin ninguna plantilla, p. ej.: \"objectClass=posixGroup\".", "Port" => "Puerto", "Base User Tree" => "Ãrbol base de usuario", +"One User Base DN per line" => "Una DN base de usuario por lÃnea", "Base Group Tree" => "Ãrbol base de grupo", +"One Group Base DN per line" => "Una DN base de grupo por lÃnea", "Group-Member association" => "Asociación Grupo-Miembro", "Use TLS" => "Usar TLS", "Do not use it for SSL connections, it will fail." => "No usarlo para SSL, dará error.", diff --git a/apps/user_ldap/l10n/fr.php b/apps/user_ldap/l10n/fr.php index dd2fb08091c..28ee6346ef4 100644 --- a/apps/user_ldap/l10n/fr.php +++ b/apps/user_ldap/l10n/fr.php @@ -1,11 +1,13 @@ <?php $TRANSLATIONS = array( "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Avertissement:</b> Les applications user_ldap et user_webdavauth sont incompatibles. Des disfonctionnements peuvent survenir. Contactez votre administrateur système pour qu'il désactive l'une d'elles.", +"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Attention :</b> Le module php LDAP n'est pas installé, par conséquent cette extension ne pourra fonctionner. Veuillez contacter votre administrateur système afin qu'il l'installe.", "Host" => "Hôte", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Vous pouvez omettre le protocole, sauf si vous avez besoin de SSL. Dans ce cas préfixez avec ldaps://", "Base DN" => "DN Racine", -"You can specify Base DN for users and groups in the Advanced tab" => "Vous pouvez détailler les DN Racines de vos utilisateurs et groupes dans l'onglet Avancé", +"One Base DN per line" => "Un DN racine par ligne", +"You can specify Base DN for users and groups in the Advanced tab" => "Vous pouvez spécifier les DN Racines de vos utilisateurs et groupes via l'onglet Avancé", "User DN" => "DN Utilisateur (Autorisé à consulter l'annuaire)", -"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." => "Le DN de l'utilisateur client avec lequel la liaison doit se faire, par exemple uid=agent,dc=example,dc=com. Pour l'accès anonyme, laisser le DN et le mot de passe vides.", +"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 de l'utilisateur client pour lequel la liaison doit se faire, par exemple uid=agent,dc=example,dc=com. Pour un accès anonyme, laisser le DN et le mot de passe vides.", "Password" => "Mot de passe", "For anonymous access, leave DN and Password empty." => "Pour un accès anonyme, laisser le DN Utilisateur et le mot de passe vides.", "User Login Filter" => "Modèle d'authentification utilisateurs", @@ -19,7 +21,9 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "sans élément de substitution, par exemple \"objectClass=posixGroup\".", "Port" => "Port", "Base User Tree" => "DN racine de l'arbre utilisateurs", +"One User Base DN per line" => "Un DN racine utilisateur par ligne", "Base Group Tree" => "DN racine de l'arbre groupes", +"One Group Base DN per line" => "Un DN racine groupe par ligne", "Group-Member association" => "Association groupe-membre", "Use TLS" => "Utiliser TLS", "Do not use it for SSL connections, it will fail." => "Ne pas utiliser pour les connexions SSL, car cela échouera.", diff --git a/apps/user_ldap/l10n/ko.php b/apps/user_ldap/l10n/ko.php index c0d09b5c3c1..78745a0e01f 100644 --- a/apps/user_ldap/l10n/ko.php +++ b/apps/user_ldap/l10n/ko.php @@ -1,8 +1,10 @@ <?php $TRANSLATIONS = array( -"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>ê²½ê³ </b>user_ldap 앱과 user_webdavauth ì•±ì€ í˜¸í™˜ë˜ì§€ 않습니다. 오ë™ìž‘ì„ ì¼ìœ¼í‚¬ 수 있으므로, 시스템 관리ìžì—게 ìš”ì²í•˜ì—¬, 둘 중 하나를 비활성화 하시기 ë°”ëžë‹ˆë‹¤.", +"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>ê²½ê³ :</b> user_ldap 앱과 user_webdavauth ì•±ì€ í˜¸í™˜ë˜ì§€ 않습니다. 오ë™ìž‘ì„ ì¼ìœ¼í‚¬ 수 있으므로, 시스템 관리ìžì—게 ìš”ì²í•˜ì—¬ 둘 중 하나만 사용하ë„ë¡ í•˜ì‹ì‹œì˜¤.", +"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>ê²½ê³ :</b> PHP LDAP ëª¨ë“ˆì´ ë¹„í™œì„±í™”ë˜ì–´ 있거나 설치ë˜ì–´ 있지 않습니다. 백엔드를 ì‚¬ìš©í• ìˆ˜ 없습니다. 시스템 관리ìžì—게 설치를 ìš”ì²í•˜ì‹ì‹œì˜¤.", "Host" => "호스트", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "SSLì„ ì‚¬ìš©í•˜ëŠ” 경우가 아니ë¼ë©´ í”„ë¡œí† ì½œì„ ìž…ë ¥í•˜ì§€ ì•Šì•„ë„ ë©ë‹ˆë‹¤. SSLì„ ì‚¬ìš©í•˜ë ¤ë©´ ldaps://를 ìž…ë ¥í•˜ì‹ì‹œì˜¤.", "Base DN" => "기본 DN", +"One Base DN per line" => "기본 DNì„ í•œ ì¤„ì— í•˜ë‚˜ì”© ìž…ë ¥í•˜ì‹ì‹œì˜¤", "You can specify Base DN for users and groups in the Advanced tab" => "ê³ ê¸‰ íƒì—서 ì‚¬ìš©ìž ë° ê·¸ë£¹ì— ëŒ€í•œ 기본 DNì„ ì§€ì •í• ìˆ˜ 있습니다.", "User DN" => "ì‚¬ìš©ìž DN", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "ë°”ì¸ë”© ìž‘ì—…ì„ ìˆ˜í–‰í• í´ë¼ì´ì–¸íЏ ì‚¬ìš©ìž DN입니다. 예를 들어서 uid=agent,dc=example,dc=com입니다. ìµëª… ì ‘ê·¼ì„ í—ˆìš©í•˜ë ¤ë©´ DNê³¼ 암호를 비워 ë‘ì‹ì‹œì˜¤.", @@ -19,7 +21,9 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "ìžë¦¬ 비움ìžë¥¼ ì‚¬ìš©í• ìˆ˜ 없습니다. ì˜ˆì œ: \"objectClass=posixGroup\"", "Port" => "í¬íЏ", "Base User Tree" => "기본 ì‚¬ìš©ìž íŠ¸ë¦¬", +"One User Base DN per line" => "ì‚¬ìš©ìž DNì„ í•œ ì¤„ì— í•˜ë‚˜ì”© ìž…ë ¥í•˜ì‹ì‹œì˜¤", "Base Group Tree" => "기본 그룹 트리", +"One Group Base DN per line" => "그룹 기본 DNì„ í•œ ì¤„ì— í•˜ë‚˜ì”© ìž…ë ¥í•˜ì‹ì‹œì˜¤", "Group-Member association" => "그룹-íšŒì› ì—°ê²°", "Use TLS" => "TLS 사용", "Do not use it for SSL connections, it will fail." => "SSL ì—°ê²° 시 사용하는 경우 ì—°ê²°ë˜ì§€ 않습니다.", diff --git a/apps/user_ldap/l10n/lb.php b/apps/user_ldap/l10n/lb.php index 2926538b5b0..6d70f682ddb 100644 --- a/apps/user_ldap/l10n/lb.php +++ b/apps/user_ldap/l10n/lb.php @@ -1,3 +1,4 @@ <?php $TRANSLATIONS = array( +"Password" => "Passwuert", "Help" => "Hëllef" ); diff --git a/apps/user_ldap/l10n/ro.php b/apps/user_ldap/l10n/ro.php index 3ab336cfffb..d83c890b747 100644 --- a/apps/user_ldap/l10n/ro.php +++ b/apps/user_ldap/l10n/ro.php @@ -1,8 +1,10 @@ <?php $TRANSLATIONS = array( "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Atentie:</b> Apps user_ldap si user_webdavauth sunt incompatibile. Este posibil sa experimentati un comportament neasteptat. Vă rugăm să întrebaÈ›i administratorul de sistem pentru a dezactiva una dintre ele.", +"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>AtenÈ›ie</b> Modulul PHP LDAP nu este instalat, infrastructura nu va funcÈ›iona. Contactează administratorul sistemului pentru al instala.", "Host" => "Gazdă", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "PuteÈ›i omite protocolul, decât dacă folosiÈ›i SSL. Atunci se începe cu ldaps://", "Base DN" => "DN de bază", +"One Base DN per line" => "Un Base DN pe linie", "You can specify Base DN for users and groups in the Advanced tab" => "PuteÈ›i să specificaÈ›i DN de bază pentru utilizatori È™i grupuri în fila Avansat", "User DN" => "DN al utilizatorului", "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-ul clientului utilizator cu care se va efectua conectarea, d.e. uid=agent,dc=example,dc=com. Pentru acces anonim, lăsăți DN È™i Parolă libere.", @@ -19,7 +21,9 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "fără substituenÈ›i, d.e. \"objectClass=posixGroup\"", "Port" => "Portul", "Base User Tree" => "Arborele de bază al Utilizatorilor", +"One User Base DN per line" => "Un User Base DN pe linie", "Base Group Tree" => "Arborele de bază al Grupurilor", +"One Group Base DN per line" => "Un Group Base DN pe linie", "Group-Member association" => "Asocierea Grup-Membru", "Use TLS" => "Utilizează TLS", "Do not use it for SSL connections, it will fail." => "A nu se utiliza pentru conexiuni SSL, va eÈ™ua.", diff --git a/apps/user_ldap/l10n/ru_RU.php b/apps/user_ldap/l10n/ru_RU.php index 64ba1176f6e..03d83b80a43 100644 --- a/apps/user_ldap/l10n/ru_RU.php +++ b/apps/user_ldap/l10n/ru_RU.php @@ -1,8 +1,10 @@ <?php $TRANSLATIONS = array( "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Предупреждение:</b> ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ user_ldap и user_webdavauth неÑовмеÑтимы. Ð’Ñ‹ можете ÑтолкнутьÑÑ Ñ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¼ поведением ÑиÑтемы. ПожалуйÑта, обратитеÑÑŒ к ÑиÑтемному админиÑтратору Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ из них.", +"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Предупреждение:</b> Модуль PHP LDAP не уÑтановлен, бÑкÑнд не будет работать. ПожалуйÑта, обратитеÑÑŒ к Вашему ÑиÑтемному админиÑтратору, чтобы уÑтановить его.", "Host" => "ХоÑÑ‚", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Ð’Ñ‹ можете пропуÑтить протокол, еÑли Вам не требуетÑÑ SSL. Затем начните Ñ ldaps://", "Base DN" => "База DN", +"One Base DN per line" => "Одно базовое DN на линию", "You can specify Base DN for users and groups in the Advanced tab" => "Ð’Ñ‹ можете задать Base DN Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹ и групп во вкладке «Дополнительно»", "User DN" => "DN пользователÑ", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN клиентÑкого пользователÑ, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ должна оÑущеÑтвлÑтьÑÑ Ð¿Ñ€Ð¸Ð²Ñзка, например, uid=agent,dc=example,dc=com. Ð”Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ доÑтупа оÑтавьте Ð¿Ð¾Ð»Ñ DN и Пароль пуÑтыми.", @@ -19,7 +21,9 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "без каких-либо заполнителей, например, \"objectClass=posixGroup\".", "Port" => "Порт", "Base User Tree" => "Базовое дерево пользователей", +"One User Base DN per line" => "Одно пользовательÑкое базовое DN на линию", "Base Group Tree" => "Базовое дерево групп", +"One Group Base DN per line" => "Одно групповое базовое DN на линию", "Group-Member association" => "СвÑзь член-группа", "Use TLS" => "ИÑпользовать TLS", "Do not use it for SSL connections, it will fail." => "Ðе иÑпользуйте Ñто SSL-Ñоединений, Ñто не будет выполнено.", diff --git a/apps/user_ldap/l10n/sk_SK.php b/apps/user_ldap/l10n/sk_SK.php index 2b340c8573d..9268c9f147e 100644 --- a/apps/user_ldap/l10n/sk_SK.php +++ b/apps/user_ldap/l10n/sk_SK.php @@ -1,7 +1,10 @@ <?php $TRANSLATIONS = array( +"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Upozornenie:</b> 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.", +"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Upozornenie:</b> nie je nainÅ¡talovaný LDAP modul pre PHP, backend vrstva nebude fungovaÅ¥. Požádejte správcu systému aby ho nainÅ¡taloval.", "Host" => "Hostiteľ", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Môžete vynechaÅ¥ protokol, s výnimkou požadovania SSL. Vtedy zaÄnite s ldaps://", "Base DN" => "Základné DN", +"One Base DN per line" => "Jedno základné DN na riadok", "You can specify Base DN for users and groups in the Advanced tab" => "V rozÅ¡Ãrenom nastavenà môžete zadaÅ¥ základné DN pre použÃvateľov a skupiny", "User DN" => "PoužÃvateľské DN", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN klientského použÃvateľa, ku ktorému tvorÃte väzbu, napr. uid=agent,dc=example,dc=com. Pre anonymný prÃstup ponechajte údaje DN a Heslo prázdne.", @@ -18,7 +21,9 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "bez zástupných znakov, napr. \"objectClass=posixGroup\"", "Port" => "Port", "Base User Tree" => "Základný použÃvateľský strom", +"One User Base DN per line" => "Jedna použÃvateľská základná DN na riadok", "Base Group Tree" => "Základný skupinový strom", +"One Group Base DN per line" => "Jedna skupinová základná DN na riadok", "Group-Member association" => "Asociácia Älena skupiny", "Use TLS" => "Použi TLS", "Do not use it for SSL connections, it will fail." => "NepoužÃvajte pre pripojenie SSL, pripojenie zlyhá.", diff --git a/apps/user_ldap/tests/group_ldap.php b/apps/user_ldap/tests/group_ldap.php index f99902d32f5..ae635597b71 100644 --- a/apps/user_ldap/tests/group_ldap.php +++ b/apps/user_ldap/tests/group_ldap.php @@ -20,7 +20,7 @@ * */ -class Test_Group_Ldap extends UnitTestCase { +class Test_Group_Ldap extends PHPUnit_Framework_TestCase { function setUp() { OC_Group::clearBackends(); } diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index 6591d1d5fee..b3180e11358 100644 --- a/apps/user_ldap/user_ldap.php +++ b/apps/user_ldap/user_ldap.php @@ -156,6 +156,7 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { } $this->connection->writeToCache('userExists'.$uid, true); + $this->updateQuota($dn); return true; } @@ -208,6 +209,50 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { return false; } + /** + * @brief get display name of the user + * @param $uid user ID of the user + * @return display name + */ + public function getDisplayName($uid) { + $cacheKey = 'getDisplayName'.$uid; + if(!is_null($displayName = $this->connection->getFromCache($cacheKey))) { + return $displayName; + } + + $displayName = $this->readAttribute( + $this->username2dn($uid), + $this->connection->ldapUserDisplayName); + + if($displayName && (count($displayName) > 0)) { + $this->connection->writeToCache($cacheKey, $displayName); + return $displayName[0]; + } + + return null; + } + + /** + * @brief Get a list of all display names + * @returns array with all displayNames (value) and the correspondig uids (key) + * + * Get a list of all display names and user ids. + */ + public function getDisplayNames($search = '', $limit = null, $offset = null) { + $cacheKey = 'getDisplayNames-'.$search.'-'.$limit.'-'.$offset; + if(!is_null($displayNames = $this->connection->getFromCache($cacheKey))) { + return $displayNames; + } + + $displayNames = array(); + $users = $this->getUsers($search, $limit, $offset); + foreach ($users as $user) { + $displayNames[$user] = $this->getDisplayName($user); + } + $this->connection->writeToCache($cacheKey, $displayNames); + return $displayNames; + } + /** * @brief Check if backend implements actions * @param $actions bitwise-or'ed actions diff --git a/apps/user_webdavauth/appinfo/info.xml b/apps/user_webdavauth/appinfo/info.xml index e51f2e9ec4f..f62f03577e8 100755 --- a/apps/user_webdavauth/appinfo/info.xml +++ b/apps/user_webdavauth/appinfo/info.xml @@ -7,7 +7,7 @@ This app is not compatible to the LDAP user and group backend.</description> <licence>AGPL</licence> <author>Frank Karlitschek</author> - <require>4.9</require> + <require>4.91</require> <shipped>true</shipped> <types> <authentication/> diff --git a/apps/user_webdavauth/l10n/da.php b/apps/user_webdavauth/l10n/da.php index 245a5101341..b268d3e15d0 100644 --- a/apps/user_webdavauth/l10n/da.php +++ b/apps/user_webdavauth/l10n/da.php @@ -1,3 +1,5 @@ <?php $TRANSLATIONS = array( -"URL: http://" => "URL: http://" +"WebDAV Authentication" => "WebDAV-godkendelse", +"URL: http://" => "URL: http://", +"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "ownCloud vil sende brugerens oplysninger til denne URL. Plugin'et registrerer responsen og fortolker HTTP-statuskoder 401 og 403 som ugyldige oplysninger, men alle andre besvarelser som gyldige oplysninger." ); diff --git a/apps/user_webdavauth/l10n/es_AR.php b/apps/user_webdavauth/l10n/es_AR.php index 245a5101341..103c3738e2d 100644 --- a/apps/user_webdavauth/l10n/es_AR.php +++ b/apps/user_webdavauth/l10n/es_AR.php @@ -1,3 +1,5 @@ <?php $TRANSLATIONS = array( -"URL: http://" => "URL: http://" +"WebDAV Authentication" => "Autenticación de WevDAV", +"URL: http://" => "URL: http://", +"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "onwCloud enviará las credenciales de usuario a esta URL. Este complemento verifica la respuesta e interpretará los códigos de respuesta HTTP 401 y 403 como credenciales inválidas y todas las otras respuestas como credenciales válidas." ); diff --git a/apps/user_webdavauth/l10n/fr.php b/apps/user_webdavauth/l10n/fr.php index 339931c7cee..9d528a3a9d2 100644 --- a/apps/user_webdavauth/l10n/fr.php +++ b/apps/user_webdavauth/l10n/fr.php @@ -1,3 +1,5 @@ <?php $TRANSLATIONS = array( -"URL: http://" => "URL : http://" +"WebDAV Authentication" => "Authentification 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 enverra les informations de connexion à cette adresse. Ce module complémentaire analyse le code réponse HTTP et considère tout code différent des codes 401 et 403 comme associé à une authentification correcte." ); diff --git a/apps/user_webdavauth/l10n/hu_HU.php b/apps/user_webdavauth/l10n/hu_HU.php index 245a5101341..64352801142 100644 --- a/apps/user_webdavauth/l10n/hu_HU.php +++ b/apps/user_webdavauth/l10n/hu_HU.php @@ -1,3 +1,5 @@ <?php $TRANSLATIONS = array( -"URL: http://" => "URL: http://" +"WebDAV Authentication" => "WebDAV hitelesÃtés", +"URL: http://" => "URL: http://", +"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "Az ownCloud elküldi a felhasználói fiók adatai a következÅ‘ URL-re. Ez a bÅ‘vÃtÅ‘modul leellenÅ‘rzi a választ és ha a HTTP hibakód nem 401 vagy 403 azaz érvénytelen hitelesÃtÅ‘, akkor minden más válasz érvényes lesz." ); diff --git a/apps/user_webdavauth/l10n/ko.php b/apps/user_webdavauth/l10n/ko.php index 245a5101341..578ff35e721 100644 --- a/apps/user_webdavauth/l10n/ko.php +++ b/apps/user_webdavauth/l10n/ko.php @@ -1,3 +1,5 @@ <?php $TRANSLATIONS = array( -"URL: http://" => "URL: http://" +"WebDAV Authentication" => "WebDAV ì¸ì¦", +"URL: http://" => "URL: http://", +"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "ownCloudì—서 ì´ URL로 ì‚¬ìš©ìž ì¸ì¦ ì •ë³´ë¥¼ 보냅니다. ì´ í”ŒëŸ¬ê·¸ì¸ì€ ì‘ë‹µì„ í™•ì¸í•˜ì—¬ HTTP ìƒíƒœ 코드 401ì´ë‚˜ 403ì´ ëŒì•„온 ê²½ìš°ì— ìž˜ëª»ëœ ì¸ì¦ ì •ë³´ë¡œ 간주합니다. 다른 ëª¨ë“ ìƒíƒœ 코드는 올바른 ì¸ì¦ ì •ë³´ë¡œ 간주합니다." ); diff --git a/apps/user_webdavauth/l10n/pt_BR.php b/apps/user_webdavauth/l10n/pt_BR.php index 991c746a221..6ddd00ccc3e 100644 --- a/apps/user_webdavauth/l10n/pt_BR.php +++ b/apps/user_webdavauth/l10n/pt_BR.php @@ -1,3 +1,5 @@ <?php $TRANSLATIONS = array( -"WebDAV URL: http://" => "URL do WebDAV: http://" +"WebDAV Authentication" => "Autenticação WebDAV", +"URL: http://" => "URL: http://", +"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "O ownCloud enviará as credenciais do usuário para esta URL. Este plugin verifica a resposta e interpreta o os códigos de status do HTTP 401 e 403 como credenciais inválidas, e todas as outras respostas como credenciais válidas." ); diff --git a/apps/user_webdavauth/l10n/ro.php b/apps/user_webdavauth/l10n/ro.php index 245a5101341..9df490e81ec 100644 --- a/apps/user_webdavauth/l10n/ro.php +++ b/apps/user_webdavauth/l10n/ro.php @@ -1,3 +1,5 @@ <?php $TRANSLATIONS = array( -"URL: http://" => "URL: http://" +"WebDAV Authentication" => "Autentificare WebDAV", +"URL: http://" => "URL: http://", +"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "ownCloud va trimite datele de autentificare la acest URL. Acest modul verifică răspunsul È™i va interpreta codurile de status HTTP 401 sau 403 ca fiind date de autentificare invalide, È™i orice alt răspuns ca fiind date valide." ); diff --git a/apps/user_webdavauth/l10n/ru_RU.php b/apps/user_webdavauth/l10n/ru_RU.php index 245a5101341..46f74cb972f 100644 --- a/apps/user_webdavauth/l10n/ru_RU.php +++ b/apps/user_webdavauth/l10n/ru_RU.php @@ -1,3 +1,4 @@ <?php $TRANSLATIONS = array( +"WebDAV Authentication" => "WebDAV аутентификациÑ", "URL: http://" => "URL: http://" ); diff --git a/apps/user_webdavauth/l10n/sk_SK.php b/apps/user_webdavauth/l10n/sk_SK.php index 9bd32954b05..c4e6dfddc7b 100644 --- a/apps/user_webdavauth/l10n/sk_SK.php +++ b/apps/user_webdavauth/l10n/sk_SK.php @@ -1,3 +1,5 @@ <?php $TRANSLATIONS = array( -"WebDAV URL: http://" => "WebDAV URL: http://" +"WebDAV Authentication" => "WebDAV overenie", +"URL: http://" => "URL: http://", +"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "ownCloud odoÅ¡le použÃvateľské údaje na zadanú URL. Plugin skontroluje odpoveÄ a považuje návratovú hodnotu HTTP 401 a 403 za neplatné údaje a vÅ¡etky ostatné hodnoty ako platné prihlasovacie údaje." ); diff --git a/build/phpcs.xml b/build/phpcs.xml index 1e10be1a111..d2909955ed2 100644 --- a/build/phpcs.xml +++ b/build/phpcs.xml @@ -10,7 +10,7 @@ <exclude-pattern>*/files_pdfviewer/js/pdfjs/*</exclude-pattern> <exclude-pattern>*/files_odfviewer/src/*</exclude-pattern> <exclude-pattern>*/files_svgedit/svg-edit/*</exclude-pattern> - <exclude-pattern>*jquery-ui-1.8.16.custom.css</exclude-pattern> + <exclude-pattern>*jquery-ui-*.css</exclude-pattern> <extensions>php</extensions> <!-- Include the whole PEAR standard --> diff --git a/config/config.sample.php b/config/config.sample.php index dafb536fa6f..05663a09a46 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -1,5 +1,7 @@ <?php +/* Only enable this for local development and not in productive environments */ +/* This will disable the minifier and outputs some additional debug informations */ define("DEBUG", true); $CONFIG = array( @@ -66,6 +68,9 @@ $CONFIG = array( /* URL of the appstore to use, server should understand OCS */ "appstoreurl" => "http://api.apps.owncloud.com/v1", +/* Enable SMTP class debugging */ +"mail_smtpdebug" => false, + /* Mode to use for sending mail, can be sendmail, smtp, qmail or php, see PHPMailer docs */ "mail_smtpmode" => "sendmail", @@ -75,17 +80,31 @@ $CONFIG = array( /* Port to use for sending mail, depends on mail_smtpmode if this is used */ "mail_smtpport" => 25, +/* SMTP server timeout in seconds for sending mail, depends on mail_smtpmode if this is used */ +"mail_smtptimeout" => 10, + +/* SMTP connection prefix or sending mail, depends on mail_smtpmode if this is used. + Can be '', ssl or tls */ +"mail_smtpsecure" => "", + /* authentication needed to send mail, depends on mail_smtpmode if this is used * (false = disable authentication) */ "mail_smtpauth" => false, +/* authentication type needed to send mail, depends on mail_smtpmode if this is used + * Can be LOGIN (default), PLAIN or NTLM */ +"mail_smtpauthtype" => "LOGIN", + /* Username to use for sendmail mail, depends on mail_smtpauth if this is used */ "mail_smtpname" => "", /* Password to use for sendmail mail, depends on mail_smtpauth if this is used */ "mail_smtppassword" => "", +/* How long should ownCloud keep deleted files in the trash bin, default value: 180 days */ +'trashbin_retention_obligation' => 180, + /* Check 3rdparty apps for malicious code fragments */ "appcodechecker" => "", @@ -104,6 +123,9 @@ $CONFIG = array( /* Lifetime of the remember login cookie, default is 15 days */ "remember_login_cookie_lifetime" => 60*60*24*15, +/* Custom CSP policy, changing this will overwrite the standard policy */ +"custom_csp_policy" => "default-src \'self\'; script-src \'self\' \'unsafe-eval\'; style-src \'self\' \'unsafe-inline\'; frame-src *; img-src *", + /* The directory where the user data is stored, default to data in the owncloud * directory. The sqlite database is also stored here, when sqlite is used. */ diff --git a/core/ajax/share.php b/core/ajax/share.php index 077baa8ba56..6704a00c5a2 100644 --- a/core/ajax/share.php +++ b/core/ajax/share.php @@ -72,6 +72,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo case 'email': // read post variables $user = OCP\USER::getUser(); + $displayName = OCP\User::getDisplayName(); $type = $_POST['itemType']; $link = $_POST['link']; $file = $_POST['file']; @@ -81,13 +82,13 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo $l = OC_L10N::get('core'); // setup the email - $subject = (string)$l->t('User %s shared a file with you', $user); + $subject = (string)$l->t('User %s shared a file with you', $displayName); if ($type === 'dir') - $subject = (string)$l->t('User %s shared a folder with you', $user); + $subject = (string)$l->t('User %s shared a folder with you', $displayName); - $text = (string)$l->t('User %s shared the file "%s" with you. It is available for download here: %s', array($user, $file, $link)); + $text = (string)$l->t('User %s shared the file "%s" with you. It is available for download here: %s', array($displayName, $file, $link)); if ($type === 'dir') - $text = (string)$l->t('User %s shared the folder "%s" with you. It is available for download here: %s', array($user, $file, $link)); + $text = (string)$l->t('User %s shared the folder "%s" with you. It is available for download here: %s', array($displayName, $file, $link)); $default_from = OCP\Util::getDefaultEmailAddress('sharing-noreply'); @@ -158,14 +159,14 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo while ($count < 4 && count($users) == $limit) { $limit = 4 - $count; if ($sharePolicy == 'groups_only') { - $users = OC_Group::usersInGroups($groups, $_GET['search'], $limit, $offset); + $users = OC_Group::DisplayNamesInGroups($groups, $_GET['search'], $limit, $offset); } else { - $users = OC_User::getUsers($_GET['search'], $limit, $offset); + $users = OC_User::getDisplayNames($_GET['search'], $limit, $offset); } $offset += $limit; - foreach ($users as $user) { - if ((!isset($_GET['itemShares']) || !is_array($_GET['itemShares'][OCP\Share::SHARE_TYPE_USER]) || !in_array($user, $_GET['itemShares'][OCP\Share::SHARE_TYPE_USER])) && $user != OC_User::getUser()) { - $shareWith[] = array('label' => $user, 'value' => array('shareType' => OCP\Share::SHARE_TYPE_USER, 'shareWith' => $user)); + foreach ($users as $uid => $displayName) { + if ((!isset($_GET['itemShares']) || !is_array($_GET['itemShares'][OCP\Share::SHARE_TYPE_USER]) || !in_array($uid, $_GET['itemShares'][OCP\Share::SHARE_TYPE_USER])) && $uid != OC_User::getUser()) { + $shareWith[] = array('label' => $displayName, 'value' => array('shareType' => OCP\Share::SHARE_TYPE_USER, 'shareWith' => $uid)); $count++; } } diff --git a/core/css/images/animated-overlay.gif b/core/css/images/animated-overlay.gif Binary files differnew file mode 100644 index 00000000000..d441f75ebfb --- /dev/null +++ b/core/css/images/animated-overlay.gif diff --git a/core/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/core/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png Binary files differnew file mode 100644 index 00000000000..954e22dbd99 --- /dev/null +++ b/core/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png diff --git a/core/css/images/ui-bg_diagonals-thick_20_666666_40x40.png b/core/css/images/ui-bg_diagonals-thick_20_666666_40x40.png Binary files differnew file mode 100644 index 00000000000..64ece5707d9 --- /dev/null +++ b/core/css/images/ui-bg_diagonals-thick_20_666666_40x40.png diff --git a/core/css/images/ui-bg_flat_100_ffffff_40x100.png b/core/css/images/ui-bg_flat_100_ffffff_40x100.png Binary files differnew file mode 100644 index 00000000000..ac8b229af95 --- /dev/null +++ b/core/css/images/ui-bg_flat_100_ffffff_40x100.png diff --git a/core/css/images/ui-bg_flat_10_000000_40x100.png b/core/css/images/ui-bg_flat_10_000000_40x100.png Binary files differnew file mode 100644 index 00000000000..abdc01082bf --- /dev/null +++ b/core/css/images/ui-bg_flat_10_000000_40x100.png diff --git a/core/css/images/ui-bg_flat_35_1d2d44_40x100.png b/core/css/images/ui-bg_flat_35_1d2d44_40x100.png Binary files differnew file mode 100644 index 00000000000..904ef14c37d --- /dev/null +++ b/core/css/images/ui-bg_flat_35_1d2d44_40x100.png diff --git a/core/css/images/ui-bg_glass_100_f8f8f8_1x400.png b/core/css/images/ui-bg_glass_100_f8f8f8_1x400.png Binary files differnew file mode 100644 index 00000000000..cd79e9f1966 --- /dev/null +++ b/core/css/images/ui-bg_glass_100_f8f8f8_1x400.png diff --git a/core/css/images/ui-bg_highlight-hard_100_f8f8f8_1x100.png b/core/css/images/ui-bg_highlight-hard_100_f8f8f8_1x100.png Binary files differnew file mode 100644 index 00000000000..268e650935d --- /dev/null +++ b/core/css/images/ui-bg_highlight-hard_100_f8f8f8_1x100.png diff --git a/core/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/core/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png Binary files differnew file mode 100644 index 00000000000..f1273672d25 --- /dev/null +++ b/core/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png diff --git a/core/css/images/ui-icons_1d2d44_256x240.png b/core/css/images/ui-icons_1d2d44_256x240.png Binary files differnew file mode 100644 index 00000000000..2a857e4da57 --- /dev/null +++ b/core/css/images/ui-icons_1d2d44_256x240.png diff --git a/core/css/images/ui-icons_222222_256x240.png b/core/css/images/ui-icons_222222_256x240.png Binary files differnew file mode 100644 index 00000000000..b273ff111d2 --- /dev/null +++ b/core/css/images/ui-icons_222222_256x240.png diff --git a/core/css/images/ui-icons_ffd27a_256x240.png b/core/css/images/ui-icons_ffd27a_256x240.png Binary files differnew file mode 100644 index 00000000000..e117effa3dc --- /dev/null +++ b/core/css/images/ui-icons_ffd27a_256x240.png diff --git a/core/css/images/ui-icons_ffffff_256x240.png b/core/css/images/ui-icons_ffffff_256x240.png Binary files differnew file mode 100644 index 00000000000..42f8f992c72 --- /dev/null +++ b/core/css/images/ui-icons_ffffff_256x240.png diff --git a/core/css/jquery-ui-1.10.0.custom.css b/core/css/jquery-ui-1.10.0.custom.css new file mode 100644 index 00000000000..a1e9895c776 --- /dev/null +++ b/core/css/jquery-ui-1.10.0.custom.css @@ -0,0 +1,1174 @@ +/*! jQuery UI - v1.10.0 - 2013-01-22 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=%22Lucida%20Grande%22%2C%20Arial%2C%20Verdana%2C%20sans-serif&fwDefault=bold&fsDefault=1em&cornerRadius=4px&bgColorHeader=1d2d44&bgTextureHeader=01_flat.png&bgImgOpacityHeader=35&borderColorHeader=1d2d44&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f8f8f8&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=ddd&fcDefault=555&iconColorDefault=1d2d44&bgColorHover=ffffff&bgTextureHover=01_flat.png&bgImgOpacityHover=100&borderColorHover=ddd&fcHover=333&iconColorHover=1d2d44&bgColorActive=f8f8f8&bgTextureActive=02_glass.png&bgImgOpacityActive=100&borderColorActive=1d2d44&fcActive=1d2d44&iconColorActive=1d2d44&bgColorHighlight=f8f8f8&bgTextureHighlight=04_highlight_hard.png&bgImgOpacityHighlight=100&borderColorHighlight=ddd&fcHighlight=555&iconColorHighlight=ffffff&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px +* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin-top: 2px; + padding: .5em .5em .5em .7em; + min-height: 0; /* support: IE7 */ +} +.ui-accordion .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-noicons { + padding-left: .7em; +} +.ui-accordion .ui-accordion-icons .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} +.ui-button { + display: inline-block; + position: relative; + padding: 0; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + overflow: visible; /* removes extra width in IE */ +} +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2.2em; +} +/* button elements seem to need a little more width */ +button.ui-button-icon-only { + width: 2.4em; +} +.ui-button-icons-only { + width: 3.4em; +} +button.ui-button-icons-only { + width: 3.7em; +} + +/* button text element */ +.ui-button .ui-button-text { + display: block; + line-height: normal; +} +.ui-button-text-only .ui-button-text { + padding: .4em 1em; +} +.ui-button-icon-only .ui-button-text, +.ui-button-icons-only .ui-button-text { + padding: .4em; + text-indent: -9999999px; +} +.ui-button-text-icon-primary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 1em .4em 2.1em; +} +.ui-button-text-icon-secondary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 2.1em .4em 1em; +} +.ui-button-text-icons .ui-button-text { + padding-left: 2.1em; + padding-right: 2.1em; +} +/* no icon support for input elements, provide padding by default */ +input.ui-button { + padding: .4em 1em; +} + +/* button icon element(s) */ +.ui-button-icon-only .ui-icon, +.ui-button-text-icon-primary .ui-icon, +.ui-button-text-icon-secondary .ui-icon, +.ui-button-text-icons .ui-icon, +.ui-button-icons-only .ui-icon { + position: absolute; + top: 50%; + margin-top: -8px; +} +.ui-button-icon-only .ui-icon { + left: 50%; + margin-left: -8px; +} +.ui-button-text-icon-primary .ui-button-icon-primary, +.ui-button-text-icons .ui-button-icon-primary, +.ui-button-icons-only .ui-button-icon-primary { + left: .5em; +} +.ui-button-text-icon-secondary .ui-button-icon-secondary, +.ui-button-text-icons .ui-button-icon-secondary, +.ui-button-icons-only .ui-button-icon-secondary { + right: .5em; +} + +/* button sets */ +.ui-buttonset { + margin-right: 7px; +} +.ui-buttonset .ui-button { + margin-left: 0; + margin-right: -.3em; +} + +/* workarounds */ +/* reset extra padding in Firefox, see h5bp.com/l */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month-year { + width: 100%; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 49%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} +.ui-dialog { + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 21px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-se { + width: 12px; + height: 12px; + right: -5px; + bottom: -5px; + background-position: 16px 16px; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-menu { + list-style: none; + padding: 2px; + margin: 0; + display: block; + outline: none; +} +.ui-menu .ui-menu { + margin-top: -3px; + position: absolute; +} +.ui-menu .ui-menu-item { + margin: 0; + padding: 0; + width: 100%; +} +.ui-menu .ui-menu-divider { + margin: 5px -2px 5px -2px; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-menu-item a { + text-decoration: none; + display: block; + padding: 2px .4em; + line-height: 1.5; + min-height: 0; /* support: IE7 */ + font-weight: normal; +} +.ui-menu .ui-menu-item a.ui-state-focus, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} + +.ui-menu .ui-state-disabled { + font-weight: normal; + margin: .4em 0 .2em; + line-height: 1.5; +} +.ui-menu .ui-state-disabled a { + cursor: default; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item a { + position: relative; + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: .2em; + left: .2em; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + position: static; + float: right; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("images/animated-overlay.gif"); + height: 100%; + filter: alpha(opacity=25); + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} + +/* For IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 22px; +} +.ui-spinner-button { + width: 16px; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to overide default borders */ +.ui-spinner a.ui-spinner-button { + border-top: none; + border-bottom: none; + border-right: none; +} +/* vertical centre icon */ +.ui-spinner .ui-icon { + position: absolute; + margin-top: -8px; + top: 50%; + left: 0; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} + +/* TR overrides */ +.ui-spinner .ui-icon-triangle-1-s { + /* need to fix icons sprite */ + background-position: -65px -16px; +} +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav li a { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active a, +.ui-tabs .ui-tabs-nav li.ui-state-disabled a, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading a { + cursor: text; +} +.ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 5px #aaa; +} +body .ui-tooltip { + border-width: 2px; +} + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: "Lucida Grande", Arial, Verdana, sans-serif; + font-size: 1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: "Lucida Grande", Arial, Verdana, sans-serif; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #dddddd; + background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; + color: #333333; +} +.ui-widget-content a { + color: #333333; +} +.ui-widget-header { + border: 1px solid #1d2d44; + background: #1d2d44 url(images/ui-bg_flat_35_1d2d44_40x100.png) 50% 50% repeat-x; + color: #ffffff; + font-weight: bold; +} +.ui-widget-header a { + color: #ffffff; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #ddd; + background: #f8f8f8 url(images/ui-bg_glass_100_f8f8f8_1x400.png) 50% 50% repeat-x; + font-weight: bold; + color: #555; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #555; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #ddd; + background: #ffffff url(images/ui-bg_flat_100_ffffff_40x100.png) 50% 50% repeat-x; + font-weight: bold; + color: #333; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited { + color: #333; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #1d2d44; + background: #f8f8f8 url(images/ui-bg_glass_100_f8f8f8_1x400.png) 50% 50% repeat-x; + font-weight: bold; + color: #1d2d44; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #1d2d44; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #ddd; + background: #f8f8f8 url(images/ui-bg_highlight-hard_100_f8f8f8_1x100.png) 50% top repeat-x; + color: #555; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #555; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a; + background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; + color: #ffffff; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #ffffff; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #ffffff; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* For IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; + background-position: 16px 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url(images/ui-icons_222222_256x240.png); +} +.ui-widget-header .ui-icon { + background-image: url(images/ui-icons_222222_256x240.png); +} +.ui-state-default .ui-icon { + background-image: url(images/ui-icons_1d2d44_256x240.png); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url(images/ui-icons_1d2d44_256x240.png); +} +.ui-state-active .ui-icon { + background-image: url(images/ui-icons_1d2d44_256x240.png); +} +.ui-state-highlight .ui-icon { + background-image: url(images/ui-icons_ffffff_256x240.png); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url(images/ui-icons_ffd27a_256x240.png); +} + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 4px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; + opacity: .5; + filter: Alpha(Opacity=50); +} +.ui-widget-shadow { + margin: -5px 0 0 -5px; + padding: 5px; + background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; + opacity: .2; + filter: Alpha(Opacity=20); + border-radius: 5px; +} diff --git a/core/css/jquery-ui-1.8.16.custom.css b/core/css/jquery-ui-1.8.16.custom.css deleted file mode 100644 index add1c6af08c..00000000000 --- a/core/css/jquery-ui-1.8.16.custom.css +++ /dev/null @@ -1,362 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { display: none; } -.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } -.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } -.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } -.ui-helper-clearfix { display: inline-block; } -/* required comment for clearfix to work in Opera \*/ -* html .ui-helper-clearfix { height:1%; } -.ui-helper-clearfix { display:block; } -/* end clearfix */ -.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { cursor: default !important; } - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } - - -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - * - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault="Lucida%20Grande",%20Arial,%20Verdana,%20sans-serif&fwDefault=bold&fsDefault=1em&cornerRadius=4px&bgColorHeader=1d2d44&bgTextureHeader=01_flat.png&bgImgOpacityHeader=35&borderColorHeader=1d2d44&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f8f8f8&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=ddd&fcDefault=555&iconColorDefault=1d2d44&bgColorHover=ffffff&bgTextureHover=01_flat.png&bgImgOpacityHover=100&borderColorHover=ddd&fcHover=333&iconColorHover=1d2d44&bgColorActive=f8f8f8&bgTextureActive=02_glass.png&bgImgOpacityActive=100&borderColorActive=1d2d44&fcActive=1d2d44&iconColorActive=1d2d44&bgColorHighlight=f8f8f8&bgTextureHighlight=04_highlight_hard.png&bgImgOpacityHighlight=100&borderColorHighlight=ddd&fcHighlight=555&iconColorHighlight=ffffff&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px - */ - - -/* Component containers -----------------------------------*/ -.ui-widget { font-family: \\\"Lucida Grande\\\", Arial, Verdana, sans-serif; font-size: 1em; } -.ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: \\\"Lucida Grande\\\", Arial, Verdana, sans-serif; font-size: 1em; } -.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee; color: #333333; } -.ui-widget-content a { color: #333333; } -.ui-widget-header { border: 1px solid #1d2d44; background: #1d2d44; color: #ffffff; font-weight: bold; } -.ui-widget-header a { color: #ffffff; } - -/* Interaction states -----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #ddd; background: #f8f8f8; font-weight: bold; color: #555; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #ddd; background: #ffffff; font-weight: bold; color: #333; } -.ui-state-hover a, .ui-state-hover a:hover { color: #333; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #1d2d44; background: #f8f8f8; font-weight: bold; color: #1d2d44; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #1d2d44; text-decoration: none; } -.ui-widget :active { outline: none; } - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { cursor: default !important; } - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } - -/* states and images */ -.ui-icon { width: 16px; height: 16px; } -.ui-icon-closethick { background-image: url(../img/actions/delete.png); } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } -.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } - -/* Overlays */ -.ui-widget-overlay { background: #666666; opacity: .50;filter:Alpha(Opacity=50); } -.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/* - * jQuery UI Resizable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Resizable#theming - */ -.ui-resizable { position: relative;} -.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } -.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } -.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } -.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } -.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } -.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } -.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } -.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } -.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } -.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* - * jQuery UI Selectable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectable#theming - */ -.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } -/* - * jQuery UI Autocomplete 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete#theming - */ -.ui-autocomplete { position: absolute; cursor: default; } - -/* workarounds */ -* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ - -/* - * jQuery UI Menu 1.8.16 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Menu#theming - */ -.ui-menu { - list-style:none; - padding: 2px; - margin: 0; - display:block; - float: left; -} -.ui-menu .ui-menu { - margin-top: -3px; -} -.ui-menu .ui-menu-item { - margin:0; - padding: 0; - zoom: 1; - float: left; - clear: left; - width: 100%; -} -.ui-menu .ui-menu-item a { - text-decoration:none; - display:block; - padding:.2em .4em; - line-height:1.5; - zoom:1; -} -.ui-menu .ui-menu-item a.ui-state-hover, -.ui-menu .ui-menu-item a.ui-state-active { - font-weight: normal; - margin: -1px; -} -/* - * jQuery UI Button 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Button#theming - */ -.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ -.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ -button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ -.ui-button-icons-only { width: 3.4em; } -button.ui-button-icons-only { width: 3.7em; } - -/*button text element */ -.ui-button .ui-button-text { display: block; line-height: 1.4; } -.ui-button-text-only .ui-button-text { padding: .4em 1em; } -.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } -.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } -.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } -.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } -/* no icon support for input elements, provide padding by default */ -input.ui-button { padding: .4em 1em; } - -/*button icon element(s) */ -.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } -.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } -.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } -.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } -.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } - -/*button sets*/ -.ui-buttonset { margin-right: 7px; } -.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } - -/* workarounds */ -button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ -/* - * jQuery UI Dialog 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog#theming - */ -.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } -.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } -.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; background-color: #EEE;} -.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } -.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } -.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } -.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } -.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } -.ui-draggable .ui-dialog-titlebar { cursor: move; } -/* - * jQuery UI Slider 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Slider#theming - */ -.ui-slider { position: relative; text-align: left; } -.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } -.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } - -.ui-slider-horizontal { height: .8em; } -.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } -.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } -.ui-slider-horizontal .ui-slider-range-min { left: 0; } -.ui-slider-horizontal .ui-slider-range-max { right: 0; } - -.ui-slider-vertical { width: .8em; height: 100px; } -.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } -.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } -.ui-slider-vertical .ui-slider-range-min { bottom: 0; } -.ui-slider-vertical .ui-slider-range-max { top: 0; }/* - * jQuery UI Tabs 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs#theming - */ -.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ -.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } -.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } -.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } -.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ -.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } -.ui-tabs .ui-tabs-hide { display: none !important; } -/* - * jQuery UI Datepicker 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Datepicker#theming - */ -.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } -.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } -.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } -.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } -.ui-datepicker .ui-datepicker-prev { left:2px; } -.ui-datepicker .ui-datepicker-next { right:2px; } -.ui-datepicker .ui-datepicker-prev-hover { left:1px; } -.ui-datepicker .ui-datepicker-next-hover { right:1px; } -.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } -.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } -.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } -.ui-datepicker select.ui-datepicker-month-year {width: 100%;} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { width: 49%;} -.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } -.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } -.ui-datepicker td { border: 0; padding: 1px; } -.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } -.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } -.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { width:auto; } -.ui-datepicker-multi .ui-datepicker-group { float:left; } -.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } -.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } -.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } -.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } -.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } - -/* RTL support */ -.ui-datepicker-rtl { direction: rtl; } -.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } -.ui-datepicker-rtl .ui-datepicker-group { float:right; } -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } - -/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ -.ui-datepicker-cover { - display: none; /*sorry for IE5*/ - display/**/: block; /*sorry for IE5*/ - position: absolute; /*must have*/ - z-index: -1; /*must have*/ - filter: mask(); /*must have*/ - top: -4px; /*must have*/ - left: -4px; /*must have*/ - width: 200px; /*must have*/ - height: 200px; /*must have*/ -}/* - * jQuery UI Progressbar 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar#theming - */ -.ui-progressbar { height:2em; text-align: left; } -.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file diff --git a/core/css/styles.css b/core/css/styles.css index 3c172d11df8..d82bdd2db4a 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -56,14 +56,15 @@ input[type="checkbox"]:hover+label, input[type="checkbox"]:focus+label { color:# /* BUTTONS */ input[type="submit"], input[type="button"], button, .button, #quota, div.jp-progress, select, .pager li a { width:auto; padding:.4em; - background-color:rgba(230,230,230,.5); font-weight:bold; color:#555; text-shadow:#fff 0 1px 0; border:1px solid #bbb; border:1px solid rgba(180,180,180,.5); cursor:pointer; - -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; + background-color:rgba(240,240,240,.9); font-weight:bold; color:#555; text-shadow:rgba(255,255,255,.9) 0 1px 0; border:1px solid rgba(190,190,190,.9); cursor:pointer; + -moz-box-shadow:0 1px 1px rgba(255,255,255,.9), 0 1px 1px rgba(255,255,255,.9) inset; -webkit-box-shadow:0 1px 1px rgba(255,255,255,.9), 0 1px 1px rgba(255,255,255,.9) inset; box-shadow:0 1px 1px rgba(255,255,255,.9), 0 1px 1px rgba(255,255,255,.9) inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; } input[type="submit"]:hover, input[type="submit"]:focus, input[type="button"]:hover, select:hover, select:focus, select:active, input[type="button"]:focus, .button:hover { - background:rgba(255,255,255,.5); color:#333; + background:rgba(250,250,250,.9); color:#333; } input[type="submit"] img, input[type="button"] img, button img, .button img { cursor:pointer; } +#header .button { border:none; -moz-box-shadow:none; -webkit-box-shadow:none; box-shadow:none; } /* Primary action button, use sparingly */ .primary, input[type="submit"].primary, input[type="button"].primary, button.primary, .button.primary { @@ -191,11 +192,12 @@ fieldset.warning legend { color:#b94a48 !important; } .bold { font-weight:bold; } .center { text-align:center; } -#notification { z-index:101; background-color:#fc4; border:0; padding:0 .7em .3em; display:none; position:fixed; left:50%; top:0; -moz-border-radius-bottomleft:1em; -webkit-border-bottom-left-radius:1em; border-bottom-left-radius:1em; -moz-border-radius-bottomright:1em; -webkit-border-bottom-right-radius:1em; border-bottom-right-radius:1em; } +#notification-container { position: fixed; top: 0px; width: 100%; text-align: center; z-index: 101; line-height: 1.2;} +#notification { z-index:101; background-color:#fc4; border:0; padding:0 .7em .3em; display:none; position: relative; top:0; -moz-border-radius-bottomleft:1em; -webkit-border-bottom-left-radius:1em; border-bottom-left-radius:1em; -moz-border-radius-bottomright:1em; -webkit-border-bottom-right-radius:1em; border-bottom-right-radius:1em; } #notification span { cursor:pointer; font-weight:bold; margin-left:1em; } -tr .action, .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; } -tr:hover .action, .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter:alpha(opacity=50); opacity:.5; } +tr .action:not(.permanent), .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; } +tr:hover .action, tr .action.permanent, .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter:alpha(opacity=50); opacity:.5; } tr .action { width:16px; height:16px; } .header-action { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter:alpha(opacity=80); opacity:.8; } tr:hover .action:hover, .selectedActions a:hover, .header-action:hover { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; } diff --git a/core/img/actions/undelete.png b/core/img/actions/undelete.png Binary files differnew file mode 100644 index 00000000000..d712527ef61 --- /dev/null +++ b/core/img/actions/undelete.png diff --git a/core/js/config.php b/core/js/config.php new file mode 100644 index 00000000000..9069175ed6f --- /dev/null +++ b/core/js/config.php @@ -0,0 +1,41 @@ +<?php +/** + * Copyright (c) 2013 Lukas Reschke <lukas@statuscode.ch> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +// Set the content type to Javascript +header("Content-type: text/javascript"); + +// Disallow caching +header("Cache-Control: no-cache, must-revalidate"); +header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); + +// Enable l10n support +$l = OC_L10N::get('core'); + +// Get the config +$apps_paths = array(); +foreach(OC_App::getEnabledApps() as $app) { + $apps_paths[$app] = OC_App::getAppWebPath($app); +} + +$array = array( + "oc_debug" => (defined('DEBUG') && DEBUG) ? 'true' : 'false', + "oc_webroot" => "\"".OC::$WEBROOT."\"", + "oc_appswebroots" => str_replace('\\/', '/', json_encode($apps_paths)), // Ugly unescape slashes waiting for better solution + "oc_current_user" => "\"".OC_User::getUser(). "\"", + "oc_requesttoken" => "\"".OC_Util::callRegister(). "\"", + "datepickerFormatDate" => json_encode($l->l('jsdate', 'jsdate')), + "dayNames" => json_encode(array((string)$l->t('Sunday'), (string)$l->t('Monday'), (string)$l->t('Tuesday'), (string)$l->t('Wednesday'), (string)$l->t('Thursday'), (string)$l->t('Friday'), (string)$l->t('Saturday'))), + "monthNames" => json_encode(array((string)$l->t('January'), (string)$l->t('February'), (string)$l->t('March'), (string)$l->t('April'), (string)$l->t('May'), (string)$l->t('June'), (string)$l->t('July'), (string)$l->t('August'), (string)$l->t('September'), (string)$l->t('October'), (string)$l->t('November'), (string)$l->t('December'))), + "firstDay" => json_encode($l->l('firstday', 'firstday')) , + ); + +// Echo it +foreach ($array as $setting => $value) { + echo("var ". $setting ."=".$value.";\n"); +} +?>
\ No newline at end of file diff --git a/core/js/eventsource.js b/core/js/eventsource.js index 0c2a995f331..f783ade7ae9 100644 --- a/core/js/eventsource.js +++ b/core/js/eventsource.js @@ -40,7 +40,7 @@ OC.EventSource=function(src,data){ dataStr+=name+'='+encodeURIComponent(data[name])+'&'; } } - dataStr+='requesttoken='+OC.EventSource.requesttoken; + dataStr+='requesttoken='+oc_requesttoken; if(!this.useFallBack && typeof EventSource !='undefined'){ var joinChar = '&'; if(src.indexOf('?') == -1) { diff --git a/core/js/jquery-ui-1.10.0.custom.js b/core/js/jquery-ui-1.10.0.custom.js new file mode 100644 index 00000000000..ca57f47ede4 --- /dev/null +++ b/core/js/jquery-ui-1.10.0.custom.js @@ -0,0 +1,14850 @@ +/*! jQuery UI - v1.10.0 - 2013-01-22 +* http://jqueryui.com +* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js +* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */ + +(function( $, undefined ) { + +var uuid = 0, + runiqueId = /^ui-id-\d+$/; + +// prevent duplicate loading +// this is only a problem because we proxy existing functions +// and we don't want to double proxy them +$.ui = $.ui || {}; +if ( $.ui.version ) { + return; +} + +$.extend( $.ui, { + version: "1.10.0", + + keyCode: { + BACKSPACE: 8, + COMMA: 188, + DELETE: 46, + DOWN: 40, + END: 35, + ENTER: 13, + ESCAPE: 27, + HOME: 36, + LEFT: 37, + NUMPAD_ADD: 107, + NUMPAD_DECIMAL: 110, + NUMPAD_DIVIDE: 111, + NUMPAD_ENTER: 108, + NUMPAD_MULTIPLY: 106, + NUMPAD_SUBTRACT: 109, + PAGE_DOWN: 34, + PAGE_UP: 33, + PERIOD: 190, + RIGHT: 39, + SPACE: 32, + TAB: 9, + UP: 38 + } +}); + +// plugins +$.fn.extend({ + _focus: $.fn.focus, + focus: function( delay, fn ) { + return typeof delay === "number" ? + this.each(function() { + var elem = this; + setTimeout(function() { + $( elem ).focus(); + if ( fn ) { + fn.call( elem ); + } + }, delay ); + }) : + this._focus.apply( this, arguments ); + }, + + scrollParent: function() { + var scrollParent; + if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) { + scrollParent = this.parents().filter(function() { + return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x")); + }).eq(0); + } else { + scrollParent = this.parents().filter(function() { + return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x")); + }).eq(0); + } + + return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent; + }, + + zIndex: function( zIndex ) { + if ( zIndex !== undefined ) { + return this.css( "zIndex", zIndex ); + } + + if ( this.length ) { + var elem = $( this[ 0 ] ), position, value; + while ( elem.length && elem[ 0 ] !== document ) { + // Ignore z-index if position is set to a value where z-index is ignored by the browser + // This makes behavior of this function consistent across browsers + // WebKit always returns auto if the element is positioned + position = elem.css( "position" ); + if ( position === "absolute" || position === "relative" || position === "fixed" ) { + // IE returns 0 when zIndex is not specified + // other browsers return a string + // we ignore the case of nested elements with an explicit value of 0 + // <div style="z-index: -10;"><div style="z-index: 0;"></div></div> + value = parseInt( elem.css( "zIndex" ), 10 ); + if ( !isNaN( value ) && value !== 0 ) { + return value; + } + } + elem = elem.parent(); + } + } + + return 0; + }, + + uniqueId: function() { + return this.each(function() { + if ( !this.id ) { + this.id = "ui-id-" + (++uuid); + } + }); + }, + + removeUniqueId: function() { + return this.each(function() { + if ( runiqueId.test( this.id ) ) { + $( this ).removeAttr( "id" ); + } + }); + } +}); + +// selectors +function focusable( element, isTabIndexNotNaN ) { + var map, mapName, img, + nodeName = element.nodeName.toLowerCase(); + if ( "area" === nodeName ) { + map = element.parentNode; + mapName = map.name; + if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { + return false; + } + img = $( "img[usemap=#" + mapName + "]" )[0]; + return !!img && visible( img ); + } + return ( /input|select|textarea|button|object/.test( nodeName ) ? + !element.disabled : + "a" === nodeName ? + element.href || isTabIndexNotNaN : + isTabIndexNotNaN) && + // the element and all of its ancestors must be visible + visible( element ); +} + +function visible( element ) { + return $.expr.filters.visible( element ) && + !$( element ).parents().addBack().filter(function() { + return $.css( this, "visibility" ) === "hidden"; + }).length; +} + +$.extend( $.expr[ ":" ], { + data: $.expr.createPseudo ? + $.expr.createPseudo(function( dataName ) { + return function( elem ) { + return !!$.data( elem, dataName ); + }; + }) : + // support: jQuery <1.8 + function( elem, i, match ) { + return !!$.data( elem, match[ 3 ] ); + }, + + focusable: function( element ) { + return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) ); + }, + + tabbable: function( element ) { + var tabIndex = $.attr( element, "tabindex" ), + isTabIndexNaN = isNaN( tabIndex ); + return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN ); + } +}); + +// support: jQuery <1.8 +if ( !$( "<a>" ).outerWidth( 1 ).jquery ) { + $.each( [ "Width", "Height" ], function( i, name ) { + var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], + type = name.toLowerCase(), + orig = { + innerWidth: $.fn.innerWidth, + innerHeight: $.fn.innerHeight, + outerWidth: $.fn.outerWidth, + outerHeight: $.fn.outerHeight + }; + + function reduce( elem, size, border, margin ) { + $.each( side, function() { + size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; + if ( border ) { + size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; + } + if ( margin ) { + size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; + } + }); + return size; + } + + $.fn[ "inner" + name ] = function( size ) { + if ( size === undefined ) { + return orig[ "inner" + name ].call( this ); + } + + return this.each(function() { + $( this ).css( type, reduce( this, size ) + "px" ); + }); + }; + + $.fn[ "outer" + name] = function( size, margin ) { + if ( typeof size !== "number" ) { + return orig[ "outer" + name ].call( this, size ); + } + + return this.each(function() { + $( this).css( type, reduce( this, size, true, margin ) + "px" ); + }); + }; + }); +} + +// support: jQuery <1.8 +if ( !$.fn.addBack ) { + $.fn.addBack = function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + }; +} + +// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413) +if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) { + $.fn.removeData = (function( removeData ) { + return function( key ) { + if ( arguments.length ) { + return removeData.call( this, $.camelCase( key ) ); + } else { + return removeData.call( this ); + } + }; + })( $.fn.removeData ); +} + + + + + +// deprecated +$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); + +$.support.selectstart = "onselectstart" in document.createElement( "div" ); +$.fn.extend({ + disableSelection: function() { + return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) + + ".ui-disableSelection", function( event ) { + event.preventDefault(); + }); + }, + + enableSelection: function() { + return this.unbind( ".ui-disableSelection" ); + } +}); + +$.extend( $.ui, { + // $.ui.plugin is deprecated. Use the proxy pattern instead. + plugin: { + add: function( module, option, set ) { + var i, + proto = $.ui[ module ].prototype; + for ( i in set ) { + proto.plugins[ i ] = proto.plugins[ i ] || []; + proto.plugins[ i ].push( [ option, set[ i ] ] ); + } + }, + call: function( instance, name, args ) { + var i, + set = instance.plugins[ name ]; + if ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) { + return; + } + + for ( i = 0; i < set.length; i++ ) { + if ( instance.options[ set[ i ][ 0 ] ] ) { + set[ i ][ 1 ].apply( instance.element, args ); + } + } + } + }, + + // only used by resizable + hasScroll: function( el, a ) { + + //If overflow is hidden, the element might have extra content, but the user wants to hide it + if ( $( el ).css( "overflow" ) === "hidden") { + return false; + } + + var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop", + has = false; + + if ( el[ scroll ] > 0 ) { + return true; + } + + // TODO: determine which cases actually cause this to happen + // if the element doesn't have the scroll set, see if it's possible to + // set the scroll + el[ scroll ] = 1; + has = ( el[ scroll ] > 0 ); + el[ scroll ] = 0; + return has; + } +}); + +})( jQuery ); +(function( $, undefined ) { + +var uuid = 0, + slice = Array.prototype.slice, + _cleanData = $.cleanData; +$.cleanData = function( elems ) { + for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { + try { + $( elem ).triggerHandler( "remove" ); + // http://bugs.jquery.com/ticket/8235 + } catch( e ) {} + } + _cleanData( elems ); +}; + +$.widget = function( name, base, prototype ) { + var fullName, existingConstructor, constructor, basePrototype, + // proxiedPrototype allows the provided prototype to remain unmodified + // so that it can be used as a mixin for multiple widgets (#8876) + proxiedPrototype = {}, + namespace = name.split( "." )[ 0 ]; + + name = name.split( "." )[ 1 ]; + fullName = namespace + "-" + name; + + if ( !prototype ) { + prototype = base; + base = $.Widget; + } + + // create selector for plugin + $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { + return !!$.data( elem, fullName ); + }; + + $[ namespace ] = $[ namespace ] || {}; + existingConstructor = $[ namespace ][ name ]; + constructor = $[ namespace ][ name ] = function( options, element ) { + // allow instantiation without "new" keyword + if ( !this._createWidget ) { + return new constructor( options, element ); + } + + // allow instantiation without initializing for simple inheritance + // must use "new" keyword (the code above always passes args) + if ( arguments.length ) { + this._createWidget( options, element ); + } + }; + // extend with the existing constructor to carry over any static properties + $.extend( constructor, existingConstructor, { + version: prototype.version, + // copy the object used to create the prototype in case we need to + // redefine the widget later + _proto: $.extend( {}, prototype ), + // track widgets that inherit from this widget in case this widget is + // redefined after a widget inherits from it + _childConstructors: [] + }); + + basePrototype = new base(); + // we need to make the options hash a property directly on the new instance + // otherwise we'll modify the options hash on the prototype that we're + // inheriting from + basePrototype.options = $.widget.extend( {}, basePrototype.options ); + $.each( prototype, function( prop, value ) { + if ( !$.isFunction( value ) ) { + proxiedPrototype[ prop ] = value; + return; + } + proxiedPrototype[ prop ] = (function() { + var _super = function() { + return base.prototype[ prop ].apply( this, arguments ); + }, + _superApply = function( args ) { + return base.prototype[ prop ].apply( this, args ); + }; + return function() { + var __super = this._super, + __superApply = this._superApply, + returnValue; + + this._super = _super; + this._superApply = _superApply; + + returnValue = value.apply( this, arguments ); + + this._super = __super; + this._superApply = __superApply; + + return returnValue; + }; + })(); + }); + constructor.prototype = $.widget.extend( basePrototype, { + // TODO: remove support for widgetEventPrefix + // always use the name + a colon as the prefix, e.g., draggable:start + // don't prefix for widgets that aren't DOM-based + widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name + }, proxiedPrototype, { + constructor: constructor, + namespace: namespace, + widgetName: name, + widgetFullName: fullName + }); + + // If this widget is being redefined then we need to find all widgets that + // are inheriting from it and redefine all of them so that they inherit from + // the new version of this widget. We're essentially trying to replace one + // level in the prototype chain. + if ( existingConstructor ) { + $.each( existingConstructor._childConstructors, function( i, child ) { + var childPrototype = child.prototype; + + // redefine the child widget using the same prototype that was + // originally used, but inherit from the new version of the base + $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); + }); + // remove the list of existing child constructors from the old constructor + // so the old child constructors can be garbage collected + delete existingConstructor._childConstructors; + } else { + base._childConstructors.push( constructor ); + } + + $.widget.bridge( name, constructor ); +}; + +$.widget.extend = function( target ) { + var input = slice.call( arguments, 1 ), + inputIndex = 0, + inputLength = input.length, + key, + value; + for ( ; inputIndex < inputLength; inputIndex++ ) { + for ( key in input[ inputIndex ] ) { + value = input[ inputIndex ][ key ]; + if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { + // Clone objects + if ( $.isPlainObject( value ) ) { + target[ key ] = $.isPlainObject( target[ key ] ) ? + $.widget.extend( {}, target[ key ], value ) : + // Don't extend strings, arrays, etc. with objects + $.widget.extend( {}, value ); + // Copy everything else by reference + } else { + target[ key ] = value; + } + } + } + } + return target; +}; + +$.widget.bridge = function( name, object ) { + var fullName = object.prototype.widgetFullName || name; + $.fn[ name ] = function( options ) { + var isMethodCall = typeof options === "string", + args = slice.call( arguments, 1 ), + returnValue = this; + + // allow multiple hashes to be passed on init + options = !isMethodCall && args.length ? + $.widget.extend.apply( null, [ options ].concat(args) ) : + options; + + if ( isMethodCall ) { + this.each(function() { + var methodValue, + instance = $.data( this, fullName ); + if ( !instance ) { + return $.error( "cannot call methods on " + name + " prior to initialization; " + + "attempted to call method '" + options + "'" ); + } + if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { + return $.error( "no such method '" + options + "' for " + name + " widget instance" ); + } + methodValue = instance[ options ].apply( instance, args ); + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue && methodValue.jquery ? + returnValue.pushStack( methodValue.get() ) : + methodValue; + return false; + } + }); + } else { + this.each(function() { + var instance = $.data( this, fullName ); + if ( instance ) { + instance.option( options || {} )._init(); + } else { + $.data( this, fullName, new object( options, this ) ); + } + }); + } + + return returnValue; + }; +}; + +$.Widget = function( /* options, element */ ) {}; +$.Widget._childConstructors = []; + +$.Widget.prototype = { + widgetName: "widget", + widgetEventPrefix: "", + defaultElement: "<div>", + options: { + disabled: false, + + // callbacks + create: null + }, + _createWidget: function( options, element ) { + element = $( element || this.defaultElement || this )[ 0 ]; + this.element = $( element ); + this.uuid = uuid++; + this.eventNamespace = "." + this.widgetName + this.uuid; + this.options = $.widget.extend( {}, + this.options, + this._getCreateOptions(), + options ); + + this.bindings = $(); + this.hoverable = $(); + this.focusable = $(); + + if ( element !== this ) { + $.data( element, this.widgetFullName, this ); + this._on( true, this.element, { + remove: function( event ) { + if ( event.target === element ) { + this.destroy(); + } + } + }); + this.document = $( element.style ? + // element within the document + element.ownerDocument : + // element is window or document + element.document || element ); + this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); + } + + this._create(); + this._trigger( "create", null, this._getCreateEventData() ); + this._init(); + }, + _getCreateOptions: $.noop, + _getCreateEventData: $.noop, + _create: $.noop, + _init: $.noop, + + destroy: function() { + this._destroy(); + // we can probably remove the unbind calls in 2.0 + // all event bindings should go through this._on() + this.element + .unbind( this.eventNamespace ) + // 1.9 BC for #7810 + // TODO remove dual storage + .removeData( this.widgetName ) + .removeData( this.widgetFullName ) + // support: jquery <1.6.3 + // http://bugs.jquery.com/ticket/9413 + .removeData( $.camelCase( this.widgetFullName ) ); + this.widget() + .unbind( this.eventNamespace ) + .removeAttr( "aria-disabled" ) + .removeClass( + this.widgetFullName + "-disabled " + + "ui-state-disabled" ); + + // clean up events and states + this.bindings.unbind( this.eventNamespace ); + this.hoverable.removeClass( "ui-state-hover" ); + this.focusable.removeClass( "ui-state-focus" ); + }, + _destroy: $.noop, + + widget: function() { + return this.element; + }, + + option: function( key, value ) { + var options = key, + parts, + curOption, + i; + + if ( arguments.length === 0 ) { + // don't return a reference to the internal hash + return $.widget.extend( {}, this.options ); + } + + if ( typeof key === "string" ) { + // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } + options = {}; + parts = key.split( "." ); + key = parts.shift(); + if ( parts.length ) { + curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); + for ( i = 0; i < parts.length - 1; i++ ) { + curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; + curOption = curOption[ parts[ i ] ]; + } + key = parts.pop(); + if ( value === undefined ) { + return curOption[ key ] === undefined ? null : curOption[ key ]; + } + curOption[ key ] = value; + } else { + if ( value === undefined ) { + return this.options[ key ] === undefined ? null : this.options[ key ]; + } + options[ key ] = value; + } + } + + this._setOptions( options ); + + return this; + }, + _setOptions: function( options ) { + var key; + + for ( key in options ) { + this._setOption( key, options[ key ] ); + } + + return this; + }, + _setOption: function( key, value ) { + this.options[ key ] = value; + + if ( key === "disabled" ) { + this.widget() + .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value ) + .attr( "aria-disabled", value ); + this.hoverable.removeClass( "ui-state-hover" ); + this.focusable.removeClass( "ui-state-focus" ); + } + + return this; + }, + + enable: function() { + return this._setOption( "disabled", false ); + }, + disable: function() { + return this._setOption( "disabled", true ); + }, + + _on: function( suppressDisabledCheck, element, handlers ) { + var delegateElement, + instance = this; + + // no suppressDisabledCheck flag, shuffle arguments + if ( typeof suppressDisabledCheck !== "boolean" ) { + handlers = element; + element = suppressDisabledCheck; + suppressDisabledCheck = false; + } + + // no element argument, shuffle and use this.element + if ( !handlers ) { + handlers = element; + element = this.element; + delegateElement = this.widget(); + } else { + // accept selectors, DOM elements + element = delegateElement = $( element ); + this.bindings = this.bindings.add( element ); + } + + $.each( handlers, function( event, handler ) { + function handlerProxy() { + // allow widgets to customize the disabled handling + // - disabled as an array instead of boolean + // - disabled class as method for disabling individual parts + if ( !suppressDisabledCheck && + ( instance.options.disabled === true || + $( this ).hasClass( "ui-state-disabled" ) ) ) { + return; + } + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + + // copy the guid so direct unbinding works + if ( typeof handler !== "string" ) { + handlerProxy.guid = handler.guid = + handler.guid || handlerProxy.guid || $.guid++; + } + + var match = event.match( /^(\w+)\s*(.*)$/ ), + eventName = match[1] + instance.eventNamespace, + selector = match[2]; + if ( selector ) { + delegateElement.delegate( selector, eventName, handlerProxy ); + } else { + element.bind( eventName, handlerProxy ); + } + }); + }, + + _off: function( element, eventName ) { + eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; + element.unbind( eventName ).undelegate( eventName ); + }, + + _delay: function( handler, delay ) { + function handlerProxy() { + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + var instance = this; + return setTimeout( handlerProxy, delay || 0 ); + }, + + _hoverable: function( element ) { + this.hoverable = this.hoverable.add( element ); + this._on( element, { + mouseenter: function( event ) { + $( event.currentTarget ).addClass( "ui-state-hover" ); + }, + mouseleave: function( event ) { + $( event.currentTarget ).removeClass( "ui-state-hover" ); + } + }); + }, + + _focusable: function( element ) { + this.focusable = this.focusable.add( element ); + this._on( element, { + focusin: function( event ) { + $( event.currentTarget ).addClass( "ui-state-focus" ); + }, + focusout: function( event ) { + $( event.currentTarget ).removeClass( "ui-state-focus" ); + } + }); + }, + + _trigger: function( type, event, data ) { + var prop, orig, + callback = this.options[ type ]; + + data = data || {}; + event = $.Event( event ); + event.type = ( type === this.widgetEventPrefix ? + type : + this.widgetEventPrefix + type ).toLowerCase(); + // the original event may come from any element + // so we need to reset the target on the new event + event.target = this.element[ 0 ]; + + // copy original event properties over to the new event + orig = event.originalEvent; + if ( orig ) { + for ( prop in orig ) { + if ( !( prop in event ) ) { + event[ prop ] = orig[ prop ]; + } + } + } + + this.element.trigger( event, data ); + return !( $.isFunction( callback ) && + callback.apply( this.element[0], [ event ].concat( data ) ) === false || + event.isDefaultPrevented() ); + } +}; + +$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { + $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { + if ( typeof options === "string" ) { + options = { effect: options }; + } + var hasOptions, + effectName = !options ? + method : + options === true || typeof options === "number" ? + defaultEffect : + options.effect || defaultEffect; + options = options || {}; + if ( typeof options === "number" ) { + options = { duration: options }; + } + hasOptions = !$.isEmptyObject( options ); + options.complete = callback; + if ( options.delay ) { + element.delay( options.delay ); + } + if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { + element[ method ]( options ); + } else if ( effectName !== method && element[ effectName ] ) { + element[ effectName ]( options.duration, options.easing, callback ); + } else { + element.queue(function( next ) { + $( this )[ method ](); + if ( callback ) { + callback.call( element[ 0 ] ); + } + next(); + }); + } + }; +}); + +})( jQuery ); +(function( $, undefined ) { + +var mouseHandled = false; +$( document ).mouseup( function() { + mouseHandled = false; +}); + +$.widget("ui.mouse", { + version: "1.10.0", + options: { + cancel: "input,textarea,button,select,option", + distance: 1, + delay: 0 + }, + _mouseInit: function() { + var that = this; + + this.element + .bind("mousedown."+this.widgetName, function(event) { + return that._mouseDown(event); + }) + .bind("click."+this.widgetName, function(event) { + if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) { + $.removeData(event.target, that.widgetName + ".preventClickEvent"); + event.stopImmediatePropagation(); + return false; + } + }); + + this.started = false; + }, + + // TODO: make sure destroying one instance of mouse doesn't mess with + // other instances of mouse + _mouseDestroy: function() { + this.element.unbind("."+this.widgetName); + if ( this._mouseMoveDelegate ) { + $(document) + .unbind("mousemove."+this.widgetName, this._mouseMoveDelegate) + .unbind("mouseup."+this.widgetName, this._mouseUpDelegate); + } + }, + + _mouseDown: function(event) { + // don't let more than one widget handle mouseStart + if( mouseHandled ) { return; } + + // we may have missed mouseup (out of window) + (this._mouseStarted && this._mouseUp(event)); + + this._mouseDownEvent = event; + + var that = this, + btnIsLeft = (event.which === 1), + // event.target.nodeName works around a bug in IE 8 with + // disabled inputs (#7620) + elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false); + if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { + return true; + } + + this.mouseDelayMet = !this.options.delay; + if (!this.mouseDelayMet) { + this._mouseDelayTimer = setTimeout(function() { + that.mouseDelayMet = true; + }, this.options.delay); + } + + if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { + this._mouseStarted = (this._mouseStart(event) !== false); + if (!this._mouseStarted) { + event.preventDefault(); + return true; + } + } + + // Click event may never have fired (Gecko & Opera) + if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) { + $.removeData(event.target, this.widgetName + ".preventClickEvent"); + } + + // these delegates are required to keep context + this._mouseMoveDelegate = function(event) { + return that._mouseMove(event); + }; + this._mouseUpDelegate = function(event) { + return that._mouseUp(event); + }; + $(document) + .bind("mousemove."+this.widgetName, this._mouseMoveDelegate) + .bind("mouseup."+this.widgetName, this._mouseUpDelegate); + + event.preventDefault(); + + mouseHandled = true; + return true; + }, + + _mouseMove: function(event) { + // IE mouseup check - mouseup happened when mouse was out of window + if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) { + return this._mouseUp(event); + } + + if (this._mouseStarted) { + this._mouseDrag(event); + return event.preventDefault(); + } + + if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { + this._mouseStarted = + (this._mouseStart(this._mouseDownEvent, event) !== false); + (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); + } + + return !this._mouseStarted; + }, + + _mouseUp: function(event) { + $(document) + .unbind("mousemove."+this.widgetName, this._mouseMoveDelegate) + .unbind("mouseup."+this.widgetName, this._mouseUpDelegate); + + if (this._mouseStarted) { + this._mouseStarted = false; + + if (event.target === this._mouseDownEvent.target) { + $.data(event.target, this.widgetName + ".preventClickEvent", true); + } + + this._mouseStop(event); + } + + return false; + }, + + _mouseDistanceMet: function(event) { + return (Math.max( + Math.abs(this._mouseDownEvent.pageX - event.pageX), + Math.abs(this._mouseDownEvent.pageY - event.pageY) + ) >= this.options.distance + ); + }, + + _mouseDelayMet: function(/* event */) { + return this.mouseDelayMet; + }, + + // These are placeholder methods, to be overriden by extending plugin + _mouseStart: function(/* event */) {}, + _mouseDrag: function(/* event */) {}, + _mouseStop: function(/* event */) {}, + _mouseCapture: function(/* event */) { return true; } +}); + +})(jQuery); +(function( $, undefined ) { + +$.ui = $.ui || {}; + +var cachedScrollbarWidth, + max = Math.max, + abs = Math.abs, + round = Math.round, + rhorizontal = /left|center|right/, + rvertical = /top|center|bottom/, + roffset = /[\+\-]\d+%?/, + rposition = /^\w+/, + rpercent = /%$/, + _position = $.fn.position; + +function getOffsets( offsets, width, height ) { + return [ + parseInt( offsets[ 0 ], 10 ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), + parseInt( offsets[ 1 ], 10 ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) + ]; +} + +function parseCss( element, property ) { + return parseInt( $.css( element, property ), 10 ) || 0; +} + +function getDimensions( elem ) { + var raw = elem[0]; + if ( raw.nodeType === 9 ) { + return { + width: elem.width(), + height: elem.height(), + offset: { top: 0, left: 0 } + }; + } + if ( $.isWindow( raw ) ) { + return { + width: elem.width(), + height: elem.height(), + offset: { top: elem.scrollTop(), left: elem.scrollLeft() } + }; + } + if ( raw.preventDefault ) { + return { + width: 0, + height: 0, + offset: { top: raw.pageY, left: raw.pageX } + }; + } + return { + width: elem.outerWidth(), + height: elem.outerHeight(), + offset: elem.offset() + }; +} + +$.position = { + scrollbarWidth: function() { + if ( cachedScrollbarWidth !== undefined ) { + return cachedScrollbarWidth; + } + var w1, w2, + div = $( "<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ), + innerDiv = div.children()[0]; + + $( "body" ).append( div ); + w1 = innerDiv.offsetWidth; + div.css( "overflow", "scroll" ); + + w2 = innerDiv.offsetWidth; + + if ( w1 === w2 ) { + w2 = div[0].clientWidth; + } + + div.remove(); + + return (cachedScrollbarWidth = w1 - w2); + }, + getScrollInfo: function( within ) { + var overflowX = within.isWindow ? "" : within.element.css( "overflow-x" ), + overflowY = within.isWindow ? "" : within.element.css( "overflow-y" ), + hasOverflowX = overflowX === "scroll" || + ( overflowX === "auto" && within.width < within.element[0].scrollWidth ), + hasOverflowY = overflowY === "scroll" || + ( overflowY === "auto" && within.height < within.element[0].scrollHeight ); + return { + width: hasOverflowX ? $.position.scrollbarWidth() : 0, + height: hasOverflowY ? $.position.scrollbarWidth() : 0 + }; + }, + getWithinInfo: function( element ) { + var withinElement = $( element || window ), + isWindow = $.isWindow( withinElement[0] ); + return { + element: withinElement, + isWindow: isWindow, + offset: withinElement.offset() || { left: 0, top: 0 }, + scrollLeft: withinElement.scrollLeft(), + scrollTop: withinElement.scrollTop(), + width: isWindow ? withinElement.width() : withinElement.outerWidth(), + height: isWindow ? withinElement.height() : withinElement.outerHeight() + }; + } +}; + +$.fn.position = function( options ) { + if ( !options || !options.of ) { + return _position.apply( this, arguments ); + } + + // make a copy, we don't want to modify arguments + options = $.extend( {}, options ); + + var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, + target = $( options.of ), + within = $.position.getWithinInfo( options.within ), + scrollInfo = $.position.getScrollInfo( within ), + collision = ( options.collision || "flip" ).split( " " ), + offsets = {}; + + dimensions = getDimensions( target ); + if ( target[0].preventDefault ) { + // force left top to allow flipping + options.at = "left top"; + } + targetWidth = dimensions.width; + targetHeight = dimensions.height; + targetOffset = dimensions.offset; + // clone to reuse original targetOffset later + basePosition = $.extend( {}, targetOffset ); + + // force my and at to have valid horizontal and vertical positions + // if a value is missing or invalid, it will be converted to center + $.each( [ "my", "at" ], function() { + var pos = ( options[ this ] || "" ).split( " " ), + horizontalOffset, + verticalOffset; + + if ( pos.length === 1) { + pos = rhorizontal.test( pos[ 0 ] ) ? + pos.concat( [ "center" ] ) : + rvertical.test( pos[ 0 ] ) ? + [ "center" ].concat( pos ) : + [ "center", "center" ]; + } + pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; + pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; + + // calculate offsets + horizontalOffset = roffset.exec( pos[ 0 ] ); + verticalOffset = roffset.exec( pos[ 1 ] ); + offsets[ this ] = [ + horizontalOffset ? horizontalOffset[ 0 ] : 0, + verticalOffset ? verticalOffset[ 0 ] : 0 + ]; + + // reduce to just the positions without the offsets + options[ this ] = [ + rposition.exec( pos[ 0 ] )[ 0 ], + rposition.exec( pos[ 1 ] )[ 0 ] + ]; + }); + + // normalize collision option + if ( collision.length === 1 ) { + collision[ 1 ] = collision[ 0 ]; + } + + if ( options.at[ 0 ] === "right" ) { + basePosition.left += targetWidth; + } else if ( options.at[ 0 ] === "center" ) { + basePosition.left += targetWidth / 2; + } + + if ( options.at[ 1 ] === "bottom" ) { + basePosition.top += targetHeight; + } else if ( options.at[ 1 ] === "center" ) { + basePosition.top += targetHeight / 2; + } + + atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); + basePosition.left += atOffset[ 0 ]; + basePosition.top += atOffset[ 1 ]; + + return this.each(function() { + var collisionPosition, using, + elem = $( this ), + elemWidth = elem.outerWidth(), + elemHeight = elem.outerHeight(), + marginLeft = parseCss( this, "marginLeft" ), + marginTop = parseCss( this, "marginTop" ), + collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width, + collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height, + position = $.extend( {}, basePosition ), + myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); + + if ( options.my[ 0 ] === "right" ) { + position.left -= elemWidth; + } else if ( options.my[ 0 ] === "center" ) { + position.left -= elemWidth / 2; + } + + if ( options.my[ 1 ] === "bottom" ) { + position.top -= elemHeight; + } else if ( options.my[ 1 ] === "center" ) { + position.top -= elemHeight / 2; + } + + position.left += myOffset[ 0 ]; + position.top += myOffset[ 1 ]; + + // if the browser doesn't support fractions, then round for consistent results + if ( !$.support.offsetFractions ) { + position.left = round( position.left ); + position.top = round( position.top ); + } + + collisionPosition = { + marginLeft: marginLeft, + marginTop: marginTop + }; + + $.each( [ "left", "top" ], function( i, dir ) { + if ( $.ui.position[ collision[ i ] ] ) { + $.ui.position[ collision[ i ] ][ dir ]( position, { + targetWidth: targetWidth, + targetHeight: targetHeight, + elemWidth: elemWidth, + elemHeight: elemHeight, + collisionPosition: collisionPosition, + collisionWidth: collisionWidth, + collisionHeight: collisionHeight, + offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], + my: options.my, + at: options.at, + within: within, + elem : elem + }); + } + }); + + if ( options.using ) { + // adds feedback as second argument to using callback, if present + using = function( props ) { + var left = targetOffset.left - position.left, + right = left + targetWidth - elemWidth, + top = targetOffset.top - position.top, + bottom = top + targetHeight - elemHeight, + feedback = { + target: { + element: target, + left: targetOffset.left, + top: targetOffset.top, + width: targetWidth, + height: targetHeight + }, + element: { + element: elem, + left: position.left, + top: position.top, + width: elemWidth, + height: elemHeight + }, + horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", + vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" + }; + if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { + feedback.horizontal = "center"; + } + if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { + feedback.vertical = "middle"; + } + if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { + feedback.important = "horizontal"; + } else { + feedback.important = "vertical"; + } + options.using.call( this, props, feedback ); + }; + } + + elem.offset( $.extend( position, { using: using } ) ); + }); +}; + +$.ui.position = { + fit: { + left: function( position, data ) { + var within = data.within, + withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, + outerWidth = within.width, + collisionPosLeft = position.left - data.collisionPosition.marginLeft, + overLeft = withinOffset - collisionPosLeft, + overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, + newOverRight; + + // element is wider than within + if ( data.collisionWidth > outerWidth ) { + // element is initially over the left side of within + if ( overLeft > 0 && overRight <= 0 ) { + newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; + position.left += overLeft - newOverRight; + // element is initially over right side of within + } else if ( overRight > 0 && overLeft <= 0 ) { + position.left = withinOffset; + // element is initially over both left and right sides of within + } else { + if ( overLeft > overRight ) { + position.left = withinOffset + outerWidth - data.collisionWidth; + } else { + position.left = withinOffset; + } + } + // too far left -> align with left edge + } else if ( overLeft > 0 ) { + position.left += overLeft; + // too far right -> align with right edge + } else if ( overRight > 0 ) { + position.left -= overRight; + // adjust based on position and margin + } else { + position.left = max( position.left - collisionPosLeft, position.left ); + } + }, + top: function( position, data ) { + var within = data.within, + withinOffset = within.isWindow ? within.scrollTop : within.offset.top, + outerHeight = data.within.height, + collisionPosTop = position.top - data.collisionPosition.marginTop, + overTop = withinOffset - collisionPosTop, + overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, + newOverBottom; + + // element is taller than within + if ( data.collisionHeight > outerHeight ) { + // element is initially over the top of within + if ( overTop > 0 && overBottom <= 0 ) { + newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; + position.top += overTop - newOverBottom; + // element is initially over bottom of within + } else if ( overBottom > 0 && overTop <= 0 ) { + position.top = withinOffset; + // element is initially over both top and bottom of within + } else { + if ( overTop > overBottom ) { + position.top = withinOffset + outerHeight - data.collisionHeight; + } else { + position.top = withinOffset; + } + } + // too far up -> align with top + } else if ( overTop > 0 ) { + position.top += overTop; + // too far down -> align with bottom edge + } else if ( overBottom > 0 ) { + position.top -= overBottom; + // adjust based on position and margin + } else { + position.top = max( position.top - collisionPosTop, position.top ); + } + } + }, + flip: { + left: function( position, data ) { + var within = data.within, + withinOffset = within.offset.left + within.scrollLeft, + outerWidth = within.width, + offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, + collisionPosLeft = position.left - data.collisionPosition.marginLeft, + overLeft = collisionPosLeft - offsetLeft, + overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, + myOffset = data.my[ 0 ] === "left" ? + -data.elemWidth : + data.my[ 0 ] === "right" ? + data.elemWidth : + 0, + atOffset = data.at[ 0 ] === "left" ? + data.targetWidth : + data.at[ 0 ] === "right" ? + -data.targetWidth : + 0, + offset = -2 * data.offset[ 0 ], + newOverRight, + newOverLeft; + + if ( overLeft < 0 ) { + newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; + if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { + position.left += myOffset + atOffset + offset; + } + } + else if ( overRight > 0 ) { + newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; + if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { + position.left += myOffset + atOffset + offset; + } + } + }, + top: function( position, data ) { + var within = data.within, + withinOffset = within.offset.top + within.scrollTop, + outerHeight = within.height, + offsetTop = within.isWindow ? within.scrollTop : within.offset.top, + collisionPosTop = position.top - data.collisionPosition.marginTop, + overTop = collisionPosTop - offsetTop, + overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, + top = data.my[ 1 ] === "top", + myOffset = top ? + -data.elemHeight : + data.my[ 1 ] === "bottom" ? + data.elemHeight : + 0, + atOffset = data.at[ 1 ] === "top" ? + data.targetHeight : + data.at[ 1 ] === "bottom" ? + -data.targetHeight : + 0, + offset = -2 * data.offset[ 1 ], + newOverTop, + newOverBottom; + if ( overTop < 0 ) { + newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; + if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) { + position.top += myOffset + atOffset + offset; + } + } + else if ( overBottom > 0 ) { + newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; + if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) { + position.top += myOffset + atOffset + offset; + } + } + } + }, + flipfit: { + left: function() { + $.ui.position.flip.left.apply( this, arguments ); + $.ui.position.fit.left.apply( this, arguments ); + }, + top: function() { + $.ui.position.flip.top.apply( this, arguments ); + $.ui.position.fit.top.apply( this, arguments ); + } + } +}; + +// fraction support test +(function () { + var testElement, testElementParent, testElementStyle, offsetLeft, i, + body = document.getElementsByTagName( "body" )[ 0 ], + div = document.createElement( "div" ); + + //Create a "fake body" for testing based on method used in jQuery.support + testElement = document.createElement( body ? "div" : "body" ); + testElementStyle = { + visibility: "hidden", + width: 0, + height: 0, + border: 0, + margin: 0, + background: "none" + }; + if ( body ) { + $.extend( testElementStyle, { + position: "absolute", + left: "-1000px", + top: "-1000px" + }); + } + for ( i in testElementStyle ) { + testElement.style[ i ] = testElementStyle[ i ]; + } + testElement.appendChild( div ); + testElementParent = body || document.documentElement; + testElementParent.insertBefore( testElement, testElementParent.firstChild ); + + div.style.cssText = "position: absolute; left: 10.7432222px;"; + + offsetLeft = $( div ).offset().left; + $.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11; + + testElement.innerHTML = ""; + testElementParent.removeChild( testElement ); +})(); + +}( jQuery ) ); +(function( $, undefined ) { + +$.widget("ui.draggable", $.ui.mouse, { + version: "1.10.0", + widgetEventPrefix: "drag", + options: { + addClasses: true, + appendTo: "parent", + axis: false, + connectToSortable: false, + containment: false, + cursor: "auto", + cursorAt: false, + grid: false, + handle: false, + helper: "original", + iframeFix: false, + opacity: false, + refreshPositions: false, + revert: false, + revertDuration: 500, + scope: "default", + scroll: true, + scrollSensitivity: 20, + scrollSpeed: 20, + snap: false, + snapMode: "both", + snapTolerance: 20, + stack: false, + zIndex: false, + + // callbacks + drag: null, + start: null, + stop: null + }, + _create: function() { + + if (this.options.helper === "original" && !(/^(?:r|a|f)/).test(this.element.css("position"))) { + this.element[0].style.position = "relative"; + } + if (this.options.addClasses){ + this.element.addClass("ui-draggable"); + } + if (this.options.disabled){ + this.element.addClass("ui-draggable-disabled"); + } + + this._mouseInit(); + + }, + + _destroy: function() { + this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" ); + this._mouseDestroy(); + }, + + _mouseCapture: function(event) { + + var o = this.options; + + // among others, prevent a drag on a resizable-handle + if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) { + return false; + } + + //Quit if we're not on a valid handle + this.handle = this._getHandle(event); + if (!this.handle) { + return false; + } + + $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() { + $("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>") + .css({ + width: this.offsetWidth+"px", height: this.offsetHeight+"px", + position: "absolute", opacity: "0.001", zIndex: 1000 + }) + .css($(this).offset()) + .appendTo("body"); + }); + + return true; + + }, + + _mouseStart: function(event) { + + var o = this.options; + + //Create and append the visible helper + this.helper = this._createHelper(event); + + this.helper.addClass("ui-draggable-dragging"); + + //Cache the helper size + this._cacheHelperProportions(); + + //If ddmanager is used for droppables, set the global draggable + if($.ui.ddmanager) { + $.ui.ddmanager.current = this; + } + + /* + * - Position generation - + * This block generates everything position related - it's the core of draggables. + */ + + //Cache the margins of the original element + this._cacheMargins(); + + //Store the helper's css position + this.cssPosition = this.helper.css("position"); + this.scrollParent = this.helper.scrollParent(); + + //The element's absolute position on the page minus margins + this.offset = this.positionAbs = this.element.offset(); + this.offset = { + top: this.offset.top - this.margins.top, + left: this.offset.left - this.margins.left + }; + + $.extend(this.offset, { + click: { //Where the click happened, relative to the element + left: event.pageX - this.offset.left, + top: event.pageY - this.offset.top + }, + parent: this._getParentOffset(), + relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper + }); + + //Generate the original position + this.originalPosition = this.position = this._generatePosition(event); + this.originalPageX = event.pageX; + this.originalPageY = event.pageY; + + //Adjust the mouse offset relative to the helper if "cursorAt" is supplied + (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); + + //Set a containment if given in the options + if(o.containment) { + this._setContainment(); + } + + //Trigger event + callbacks + if(this._trigger("start", event) === false) { + this._clear(); + return false; + } + + //Recache the helper size + this._cacheHelperProportions(); + + //Prepare the droppable offsets + if ($.ui.ddmanager && !o.dropBehaviour) { + $.ui.ddmanager.prepareOffsets(this, event); + } + + + this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position + + //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003) + if ( $.ui.ddmanager ) { + $.ui.ddmanager.dragStart(this, event); + } + + return true; + }, + + _mouseDrag: function(event, noPropagation) { + + //Compute the helpers position + this.position = this._generatePosition(event); + this.positionAbs = this._convertPositionTo("absolute"); + + //Call plugins and callbacks and use the resulting position if something is returned + if (!noPropagation) { + var ui = this._uiHash(); + if(this._trigger("drag", event, ui) === false) { + this._mouseUp({}); + return false; + } + this.position = ui.position; + } + + if(!this.options.axis || this.options.axis !== "y") { + this.helper[0].style.left = this.position.left+"px"; + } + if(!this.options.axis || this.options.axis !== "x") { + this.helper[0].style.top = this.position.top+"px"; + } + if($.ui.ddmanager) { + $.ui.ddmanager.drag(this, event); + } + + return false; + }, + + _mouseStop: function(event) { + + //If we are using droppables, inform the manager about the drop + var element, + that = this, + elementInDom = false, + dropped = false; + if ($.ui.ddmanager && !this.options.dropBehaviour) { + dropped = $.ui.ddmanager.drop(this, event); + } + + //if a drop comes from outside (a sortable) + if(this.dropped) { + dropped = this.dropped; + this.dropped = false; + } + + //if the original element is no longer in the DOM don't bother to continue (see #8269) + element = this.element[0]; + while ( element && (element = element.parentNode) ) { + if (element === document ) { + elementInDom = true; + } + } + if ( !elementInDom && this.options.helper === "original" ) { + return false; + } + + if((this.options.revert === "invalid" && !dropped) || (this.options.revert === "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) { + $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() { + if(that._trigger("stop", event) !== false) { + that._clear(); + } + }); + } else { + if(this._trigger("stop", event) !== false) { + this._clear(); + } + } + + return false; + }, + + _mouseUp: function(event) { + //Remove frame helpers + $("div.ui-draggable-iframeFix").each(function() { + this.parentNode.removeChild(this); + }); + + //If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003) + if( $.ui.ddmanager ) { + $.ui.ddmanager.dragStop(this, event); + } + + return $.ui.mouse.prototype._mouseUp.call(this, event); + }, + + cancel: function() { + + if(this.helper.is(".ui-draggable-dragging")) { + this._mouseUp({}); + } else { + this._clear(); + } + + return this; + + }, + + _getHandle: function(event) { + + var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false; + $(this.options.handle, this.element) + .find("*") + .addBack() + .each(function() { + if(this === event.target) { + handle = true; + } + }); + + return handle; + + }, + + _createHelper: function(event) { + + var o = this.options, + helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper === "clone" ? this.element.clone().removeAttr("id") : this.element); + + if(!helper.parents("body").length) { + helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo)); + } + + if(helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) { + helper.css("position", "absolute"); + } + + return helper; + + }, + + _adjustOffsetFromHelper: function(obj) { + if (typeof obj === "string") { + obj = obj.split(" "); + } + if ($.isArray(obj)) { + obj = {left: +obj[0], top: +obj[1] || 0}; + } + if ("left" in obj) { + this.offset.click.left = obj.left + this.margins.left; + } + if ("right" in obj) { + this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; + } + if ("top" in obj) { + this.offset.click.top = obj.top + this.margins.top; + } + if ("bottom" in obj) { + this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; + } + }, + + _getParentOffset: function() { + + //Get the offsetParent and cache its position + this.offsetParent = this.helper.offsetParent(); + var po = this.offsetParent.offset(); + + // This is a special case where we need to modify a offset calculated on start, since the following happened: + // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent + // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that + // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag + if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) { + po.left += this.scrollParent.scrollLeft(); + po.top += this.scrollParent.scrollTop(); + } + + //This needs to be actually done for all browsers, since pageX/pageY includes this information + //Ugly IE fix + if((this.offsetParent[0] === document.body) || + (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) { + po = { top: 0, left: 0 }; + } + + return { + top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), + left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0) + }; + + }, + + _getRelativeOffset: function() { + + if(this.cssPosition === "relative") { + var p = this.element.position(); + return { + top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), + left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft() + }; + } else { + return { top: 0, left: 0 }; + } + + }, + + _cacheMargins: function() { + this.margins = { + left: (parseInt(this.element.css("marginLeft"),10) || 0), + top: (parseInt(this.element.css("marginTop"),10) || 0), + right: (parseInt(this.element.css("marginRight"),10) || 0), + bottom: (parseInt(this.element.css("marginBottom"),10) || 0) + }; + }, + + _cacheHelperProportions: function() { + this.helperProportions = { + width: this.helper.outerWidth(), + height: this.helper.outerHeight() + }; + }, + + _setContainment: function() { + + var over, c, ce, + o = this.options; + + if(o.containment === "parent") { + o.containment = this.helper[0].parentNode; + } + if(o.containment === "document" || o.containment === "window") { + this.containment = [ + o.containment === "document" ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, + o.containment === "document" ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, + (o.containment === "document" ? 0 : $(window).scrollLeft()) + $(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left, + (o.containment === "document" ? 0 : $(window).scrollTop()) + ($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top + ]; + } + + if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor !== Array) { + c = $(o.containment); + ce = c[0]; + + if(!ce) { + return; + } + + over = ($(ce).css("overflow") !== "hidden"); + + this.containment = [ + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0), + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0), + (over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, + (over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom + ]; + this.relative_container = c; + + } else if(o.containment.constructor === Array) { + this.containment = o.containment; + } + + }, + + _convertPositionTo: function(d, pos) { + + if(!pos) { + pos = this.position; + } + + var mod = d === "absolute" ? 1 : -1, + scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); + + return { + top: ( + pos.top + // The absolute mouse position + this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod) + ), + left: ( + pos.left + // The absolute mouse position + this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) + ) + }; + + }, + + _generatePosition: function(event) { + + var containment, co, top, left, + o = this.options, + scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, + scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName), + pageX = event.pageX, + pageY = event.pageY; + + /* + * - Position constraining - + * Constrain the position to a mix of grid, containment. + */ + + if(this.originalPosition) { //If we are not dragging yet, we won't check for options + if(this.containment) { + if (this.relative_container){ + co = this.relative_container.offset(); + containment = [ this.containment[0] + co.left, + this.containment[1] + co.top, + this.containment[2] + co.left, + this.containment[3] + co.top ]; + } + else { + containment = this.containment; + } + + if(event.pageX - this.offset.click.left < containment[0]) { + pageX = containment[0] + this.offset.click.left; + } + if(event.pageY - this.offset.click.top < containment[1]) { + pageY = containment[1] + this.offset.click.top; + } + if(event.pageX - this.offset.click.left > containment[2]) { + pageX = containment[2] + this.offset.click.left; + } + if(event.pageY - this.offset.click.top > containment[3]) { + pageY = containment[3] + this.offset.click.top; + } + } + + if(o.grid) { + //Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950) + top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY; + pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; + + left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX; + pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; + } + + } + + return { + top: ( + pageY - // The absolute mouse position + this.offset.click.top - // Click offset (relative to the element) + this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.top + // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) + ), + left: ( + pageX - // The absolute mouse position + this.offset.click.left - // Click offset (relative to the element) + this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.left + // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) + ) + }; + + }, + + _clear: function() { + this.helper.removeClass("ui-draggable-dragging"); + if(this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) { + this.helper.remove(); + } + this.helper = null; + this.cancelHelperRemoval = false; + }, + + // From now on bulk stuff - mainly helpers + + _trigger: function(type, event, ui) { + ui = ui || this._uiHash(); + $.ui.plugin.call(this, type, [event, ui]); + //The absolute position has to be recalculated after plugins + if(type === "drag") { + this.positionAbs = this._convertPositionTo("absolute"); + } + return $.Widget.prototype._trigger.call(this, type, event, ui); + }, + + plugins: {}, + + _uiHash: function() { + return { + helper: this.helper, + position: this.position, + originalPosition: this.originalPosition, + offset: this.positionAbs + }; + } + +}); + +$.ui.plugin.add("draggable", "connectToSortable", { + start: function(event, ui) { + + var inst = $(this).data("ui-draggable"), o = inst.options, + uiSortable = $.extend({}, ui, { item: inst.element }); + inst.sortables = []; + $(o.connectToSortable).each(function() { + var sortable = $.data(this, "ui-sortable"); + if (sortable && !sortable.options.disabled) { + inst.sortables.push({ + instance: sortable, + shouldRevert: sortable.options.revert + }); + sortable.refreshPositions(); // Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page). + sortable._trigger("activate", event, uiSortable); + } + }); + + }, + stop: function(event, ui) { + + //If we are still over the sortable, we fake the stop event of the sortable, but also remove helper + var inst = $(this).data("ui-draggable"), + uiSortable = $.extend({}, ui, { item: inst.element }); + + $.each(inst.sortables, function() { + if(this.instance.isOver) { + + this.instance.isOver = 0; + + inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance + this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work) + + //The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: "valid/invalid" + if(this.shouldRevert) { + this.instance.options.revert = true; + } + + //Trigger the stop of the sortable + this.instance._mouseStop(event); + + this.instance.options.helper = this.instance.options._helper; + + //If the helper has been the original item, restore properties in the sortable + if(inst.options.helper === "original") { + this.instance.currentItem.css({ top: "auto", left: "auto" }); + } + + } else { + this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance + this.instance._trigger("deactivate", event, uiSortable); + } + + }); + + }, + drag: function(event, ui) { + + var inst = $(this).data("ui-draggable"), that = this; + + $.each(inst.sortables, function() { + + var innermostIntersecting = false, + thisSortable = this; + + //Copy over some variables to allow calling the sortable's native _intersectsWith + this.instance.positionAbs = inst.positionAbs; + this.instance.helperProportions = inst.helperProportions; + this.instance.offset.click = inst.offset.click; + + if(this.instance._intersectsWith(this.instance.containerCache)) { + innermostIntersecting = true; + $.each(inst.sortables, function () { + this.instance.positionAbs = inst.positionAbs; + this.instance.helperProportions = inst.helperProportions; + this.instance.offset.click = inst.offset.click; + if (this !== thisSortable && + this.instance._intersectsWith(this.instance.containerCache) && + $.ui.contains(thisSortable.instance.element[0], this.instance.element[0]) + ) { + innermostIntersecting = false; + } + return innermostIntersecting; + }); + } + + + if(innermostIntersecting) { + //If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once + if(!this.instance.isOver) { + + this.instance.isOver = 1; + //Now we fake the start of dragging for the sortable instance, + //by cloning the list group item, appending it to the sortable and using it as inst.currentItem + //We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one) + this.instance.currentItem = $(that).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", true); + this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it + this.instance.options.helper = function() { return ui.helper[0]; }; + + event.target = this.instance.currentItem[0]; + this.instance._mouseCapture(event, true); + this.instance._mouseStart(event, true, true); + + //Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes + this.instance.offset.click.top = inst.offset.click.top; + this.instance.offset.click.left = inst.offset.click.left; + this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left; + this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top; + + inst._trigger("toSortable", event); + inst.dropped = this.instance.element; //draggable revert needs that + //hack so receive/update callbacks work (mostly) + inst.currentItem = inst.element; + this.instance.fromOutside = inst; + + } + + //Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable + if(this.instance.currentItem) { + this.instance._mouseDrag(event); + } + + } else { + + //If it doesn't intersect with the sortable, and it intersected before, + //we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval + if(this.instance.isOver) { + + this.instance.isOver = 0; + this.instance.cancelHelperRemoval = true; + + //Prevent reverting on this forced stop + this.instance.options.revert = false; + + // The out event needs to be triggered independently + this.instance._trigger("out", event, this.instance._uiHash(this.instance)); + + this.instance._mouseStop(event, true); + this.instance.options.helper = this.instance.options._helper; + + //Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size + this.instance.currentItem.remove(); + if(this.instance.placeholder) { + this.instance.placeholder.remove(); + } + + inst._trigger("fromSortable", event); + inst.dropped = false; //draggable revert needs that + } + + } + + }); + + } +}); + +$.ui.plugin.add("draggable", "cursor", { + start: function() { + var t = $("body"), o = $(this).data("ui-draggable").options; + if (t.css("cursor")) { + o._cursor = t.css("cursor"); + } + t.css("cursor", o.cursor); + }, + stop: function() { + var o = $(this).data("ui-draggable").options; + if (o._cursor) { + $("body").css("cursor", o._cursor); + } + } +}); + +$.ui.plugin.add("draggable", "opacity", { + start: function(event, ui) { + var t = $(ui.helper), o = $(this).data("ui-draggable").options; + if(t.css("opacity")) { + o._opacity = t.css("opacity"); + } + t.css("opacity", o.opacity); + }, + stop: function(event, ui) { + var o = $(this).data("ui-draggable").options; + if(o._opacity) { + $(ui.helper).css("opacity", o._opacity); + } + } +}); + +$.ui.plugin.add("draggable", "scroll", { + start: function() { + var i = $(this).data("ui-draggable"); + if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") { + i.overflowOffset = i.scrollParent.offset(); + } + }, + drag: function( event ) { + + var i = $(this).data("ui-draggable"), o = i.options, scrolled = false; + + if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") { + + if(!o.axis || o.axis !== "x") { + if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) { + i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed; + } else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity) { + i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed; + } + } + + if(!o.axis || o.axis !== "y") { + if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) { + i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed; + } else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity) { + i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed; + } + } + + } else { + + if(!o.axis || o.axis !== "x") { + if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) { + scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); + } else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) { + scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); + } + } + + if(!o.axis || o.axis !== "y") { + if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) { + scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); + } else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) { + scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); + } + } + + } + + if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) { + $.ui.ddmanager.prepareOffsets(i, event); + } + + } +}); + +$.ui.plugin.add("draggable", "snap", { + start: function() { + + var i = $(this).data("ui-draggable"), + o = i.options; + + i.snapElements = []; + + $(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() { + var $t = $(this), + $o = $t.offset(); + if(this !== i.element[0]) { + i.snapElements.push({ + item: this, + width: $t.outerWidth(), height: $t.outerHeight(), + top: $o.top, left: $o.left + }); + } + }); + + }, + drag: function(event, ui) { + + var ts, bs, ls, rs, l, r, t, b, i, first, + inst = $(this).data("ui-draggable"), + o = inst.options, + d = o.snapTolerance, + x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width, + y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height; + + for (i = inst.snapElements.length - 1; i >= 0; i--){ + + l = inst.snapElements[i].left; + r = l + inst.snapElements[i].width; + t = inst.snapElements[i].top; + b = t + inst.snapElements[i].height; + + //Yes, I know, this is insane ;) + if(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) { + if(inst.snapElements[i].snapping) { + (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); + } + inst.snapElements[i].snapping = false; + continue; + } + + if(o.snapMode !== "inner") { + ts = Math.abs(t - y2) <= d; + bs = Math.abs(b - y1) <= d; + ls = Math.abs(l - x2) <= d; + rs = Math.abs(r - x1) <= d; + if(ts) { + ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top; + } + if(bs) { + ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top; + } + if(ls) { + ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left; + } + if(rs) { + ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left; + } + } + + first = (ts || bs || ls || rs); + + if(o.snapMode !== "outer") { + ts = Math.abs(t - y1) <= d; + bs = Math.abs(b - y2) <= d; + ls = Math.abs(l - x1) <= d; + rs = Math.abs(r - x2) <= d; + if(ts) { + ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top; + } + if(bs) { + ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top; + } + if(ls) { + ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left; + } + if(rs) { + ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left; + } + } + + if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) { + (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); + } + inst.snapElements[i].snapping = (ts || bs || ls || rs || first); + + } + + } +}); + +$.ui.plugin.add("draggable", "stack", { + start: function() { + + var min, + o = $(this).data("ui-draggable").options, + group = $.makeArray($(o.stack)).sort(function(a,b) { + return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0); + }); + + if (!group.length) { return; } + + min = parseInt(group[0].style.zIndex, 10) || 0; + $(group).each(function(i) { + this.style.zIndex = min + i; + }); + + this[0].style.zIndex = min + group.length; + + } +}); + +$.ui.plugin.add("draggable", "zIndex", { + start: function(event, ui) { + var t = $(ui.helper), o = $(this).data("ui-draggable").options; + if(t.css("zIndex")) { + o._zIndex = t.css("zIndex"); + } + t.css("zIndex", o.zIndex); + }, + stop: function(event, ui) { + var o = $(this).data("ui-draggable").options; + if(o._zIndex) { + $(ui.helper).css("zIndex", o._zIndex); + } + } +}); + +})(jQuery); +(function( $, undefined ) { + +function isOverAxis( x, reference, size ) { + return ( x > reference ) && ( x < ( reference + size ) ); +} + +$.widget("ui.droppable", { + version: "1.10.0", + widgetEventPrefix: "drop", + options: { + accept: "*", + activeClass: false, + addClasses: true, + greedy: false, + hoverClass: false, + scope: "default", + tolerance: "intersect", + + // callbacks + activate: null, + deactivate: null, + drop: null, + out: null, + over: null + }, + _create: function() { + + var o = this.options, + accept = o.accept; + + this.isover = false; + this.isout = true; + + this.accept = $.isFunction(accept) ? accept : function(d) { + return d.is(accept); + }; + + //Store the droppable's proportions + this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight }; + + // Add the reference and positions to the manager + $.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || []; + $.ui.ddmanager.droppables[o.scope].push(this); + + (o.addClasses && this.element.addClass("ui-droppable")); + + }, + + _destroy: function() { + var i = 0, + drop = $.ui.ddmanager.droppables[this.options.scope]; + + for ( ; i < drop.length; i++ ) { + if ( drop[i] === this ) { + drop.splice(i, 1); + } + } + + this.element.removeClass("ui-droppable ui-droppable-disabled"); + }, + + _setOption: function(key, value) { + + if(key === "accept") { + this.accept = $.isFunction(value) ? value : function(d) { + return d.is(value); + }; + } + $.Widget.prototype._setOption.apply(this, arguments); + }, + + _activate: function(event) { + var draggable = $.ui.ddmanager.current; + if(this.options.activeClass) { + this.element.addClass(this.options.activeClass); + } + if(draggable){ + this._trigger("activate", event, this.ui(draggable)); + } + }, + + _deactivate: function(event) { + var draggable = $.ui.ddmanager.current; + if(this.options.activeClass) { + this.element.removeClass(this.options.activeClass); + } + if(draggable){ + this._trigger("deactivate", event, this.ui(draggable)); + } + }, + + _over: function(event) { + + var draggable = $.ui.ddmanager.current; + + // Bail if draggable and droppable are same element + if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) { + return; + } + + if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { + if(this.options.hoverClass) { + this.element.addClass(this.options.hoverClass); + } + this._trigger("over", event, this.ui(draggable)); + } + + }, + + _out: function(event) { + + var draggable = $.ui.ddmanager.current; + + // Bail if draggable and droppable are same element + if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) { + return; + } + + if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { + if(this.options.hoverClass) { + this.element.removeClass(this.options.hoverClass); + } + this._trigger("out", event, this.ui(draggable)); + } + + }, + + _drop: function(event,custom) { + + var draggable = custom || $.ui.ddmanager.current, + childrenIntersection = false; + + // Bail if draggable and droppable are same element + if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) { + return false; + } + + this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function() { + var inst = $.data(this, "ui-droppable"); + if( + inst.options.greedy && + !inst.options.disabled && + inst.options.scope === draggable.options.scope && + inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element)) && + $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance) + ) { childrenIntersection = true; return false; } + }); + if(childrenIntersection) { + return false; + } + + if(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { + if(this.options.activeClass) { + this.element.removeClass(this.options.activeClass); + } + if(this.options.hoverClass) { + this.element.removeClass(this.options.hoverClass); + } + this._trigger("drop", event, this.ui(draggable)); + return this.element; + } + + return false; + + }, + + ui: function(c) { + return { + draggable: (c.currentItem || c.element), + helper: c.helper, + position: c.position, + offset: c.positionAbs + }; + } + +}); + +$.ui.intersect = function(draggable, droppable, toleranceMode) { + + if (!droppable.offset) { + return false; + } + + var draggableLeft, draggableTop, + x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width, + y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height, + l = droppable.offset.left, r = l + droppable.proportions.width, + t = droppable.offset.top, b = t + droppable.proportions.height; + + switch (toleranceMode) { + case "fit": + return (l <= x1 && x2 <= r && t <= y1 && y2 <= b); + case "intersect": + return (l < x1 + (draggable.helperProportions.width / 2) && // Right Half + x2 - (draggable.helperProportions.width / 2) < r && // Left Half + t < y1 + (draggable.helperProportions.height / 2) && // Bottom Half + y2 - (draggable.helperProportions.height / 2) < b ); // Top Half + case "pointer": + draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left); + draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top); + return isOverAxis( draggableTop, t, droppable.proportions.height ) && isOverAxis( draggableLeft, l, droppable.proportions.width ); + case "touch": + return ( + (y1 >= t && y1 <= b) || // Top edge touching + (y2 >= t && y2 <= b) || // Bottom edge touching + (y1 < t && y2 > b) // Surrounded vertically + ) && ( + (x1 >= l && x1 <= r) || // Left edge touching + (x2 >= l && x2 <= r) || // Right edge touching + (x1 < l && x2 > r) // Surrounded horizontally + ); + default: + return false; + } + +}; + +/* + This manager tracks offsets of draggables and droppables +*/ +$.ui.ddmanager = { + current: null, + droppables: { "default": [] }, + prepareOffsets: function(t, event) { + + var i, j, + m = $.ui.ddmanager.droppables[t.options.scope] || [], + type = event ? event.type : null, // workaround for #2317 + list = (t.currentItem || t.element).find(":data(ui-droppable)").addBack(); + + droppablesLoop: for (i = 0; i < m.length; i++) { + + //No disabled and non-accepted + if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) { + continue; + } + + // Filter out elements in the current dragged item + for (j=0; j < list.length; j++) { + if(list[j] === m[i].element[0]) { + m[i].proportions.height = 0; + continue droppablesLoop; + } + } + + m[i].visible = m[i].element.css("display") !== "none"; + if(!m[i].visible) { + continue; + } + + //Activate the droppable if used directly from draggables + if(type === "mousedown") { + m[i]._activate.call(m[i], event); + } + + m[i].offset = m[i].element.offset(); + m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight }; + + } + + }, + drop: function(draggable, event) { + + var dropped = false; + $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() { + + if(!this.options) { + return; + } + if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance)) { + dropped = this._drop.call(this, event) || dropped; + } + + if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { + this.isout = true; + this.isover = false; + this._deactivate.call(this, event); + } + + }); + return dropped; + + }, + dragStart: function( draggable, event ) { + //Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003) + draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() { + if( !draggable.options.refreshPositions ) { + $.ui.ddmanager.prepareOffsets( draggable, event ); + } + }); + }, + drag: function(draggable, event) { + + //If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse. + if(draggable.options.refreshPositions) { + $.ui.ddmanager.prepareOffsets(draggable, event); + } + + //Run through all droppables and check their positions based on specific tolerance options + $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() { + + if(this.options.disabled || this.greedyChild || !this.visible) { + return; + } + + var parentInstance, scope, parent, + intersects = $.ui.intersect(draggable, this, this.options.tolerance), + c = !intersects && this.isover ? "isout" : (intersects && !this.isover ? "isover" : null); + if(!c) { + return; + } + + if (this.options.greedy) { + // find droppable parents with same scope + scope = this.options.scope; + parent = this.element.parents(":data(ui-droppable)").filter(function () { + return $.data(this, "ui-droppable").options.scope === scope; + }); + + if (parent.length) { + parentInstance = $.data(parent[0], "ui-droppable"); + parentInstance.greedyChild = (c === "isover"); + } + } + + // we just moved into a greedy child + if (parentInstance && c === "isover") { + parentInstance.isover = false; + parentInstance.isout = true; + parentInstance._out.call(parentInstance, event); + } + + this[c] = true; + this[c === "isout" ? "isover" : "isout"] = false; + this[c === "isover" ? "_over" : "_out"].call(this, event); + + // we just moved out of a greedy child + if (parentInstance && c === "isout") { + parentInstance.isout = false; + parentInstance.isover = true; + parentInstance._over.call(parentInstance, event); + } + }); + + }, + dragStop: function( draggable, event ) { + draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" ); + //Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003) + if( !draggable.options.refreshPositions ) { + $.ui.ddmanager.prepareOffsets( draggable, event ); + } + } +}; + +})(jQuery); +(function( $, undefined ) { + +function num(v) { + return parseInt(v, 10) || 0; +} + +function isNumber(value) { + return !isNaN(parseInt(value, 10)); +} + +$.widget("ui.resizable", $.ui.mouse, { + version: "1.10.0", + widgetEventPrefix: "resize", + options: { + alsoResize: false, + animate: false, + animateDuration: "slow", + animateEasing: "swing", + aspectRatio: false, + autoHide: false, + containment: false, + ghost: false, + grid: false, + handles: "e,s,se", + helper: false, + maxHeight: null, + maxWidth: null, + minHeight: 10, + minWidth: 10, + // See #7960 + zIndex: 90, + + // callbacks + resize: null, + start: null, + stop: null + }, + _create: function() { + + var n, i, handle, axis, hname, + that = this, + o = this.options; + this.element.addClass("ui-resizable"); + + $.extend(this, { + _aspectRatio: !!(o.aspectRatio), + aspectRatio: o.aspectRatio, + originalElement: this.element, + _proportionallyResizeElements: [], + _helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null + }); + + //Wrap the element if it cannot hold child nodes + if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) { + + //Create a wrapper element and set the wrapper to the new current internal element + this.element.wrap( + $("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({ + position: this.element.css("position"), + width: this.element.outerWidth(), + height: this.element.outerHeight(), + top: this.element.css("top"), + left: this.element.css("left") + }) + ); + + //Overwrite the original this.element + this.element = this.element.parent().data( + "ui-resizable", this.element.data("ui-resizable") + ); + + this.elementIsWrapper = true; + + //Move margins to the wrapper + this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") }); + this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0}); + + //Prevent Safari textarea resize + this.originalResizeStyle = this.originalElement.css("resize"); + this.originalElement.css("resize", "none"); + + //Push the actual element to our proportionallyResize internal array + this._proportionallyResizeElements.push(this.originalElement.css({ position: "static", zoom: 1, display: "block" })); + + // avoid IE jump (hard set the margin) + this.originalElement.css({ margin: this.originalElement.css("margin") }); + + // fix handlers offset + this._proportionallyResize(); + + } + + this.handles = o.handles || (!$(".ui-resizable-handle", this.element).length ? "e,s,se" : { n: ".ui-resizable-n", e: ".ui-resizable-e", s: ".ui-resizable-s", w: ".ui-resizable-w", se: ".ui-resizable-se", sw: ".ui-resizable-sw", ne: ".ui-resizable-ne", nw: ".ui-resizable-nw" }); + if(this.handles.constructor === String) { + + if ( this.handles === "all") { + this.handles = "n,e,s,w,se,sw,ne,nw"; + } + + n = this.handles.split(","); + this.handles = {}; + + for(i = 0; i < n.length; i++) { + + handle = $.trim(n[i]); + hname = "ui-resizable-"+handle; + axis = $("<div class='ui-resizable-handle " + hname + "'></div>"); + + // Apply zIndex to all handles - see #7960 + axis.css({ zIndex: o.zIndex }); + + //TODO : What's going on here? + if ("se" === handle) { + axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se"); + } + + //Insert into internal handles object and append to element + this.handles[handle] = ".ui-resizable-"+handle; + this.element.append(axis); + } + + } + + this._renderAxis = function(target) { + + var i, axis, padPos, padWrapper; + + target = target || this.element; + + for(i in this.handles) { + + if(this.handles[i].constructor === String) { + this.handles[i] = $(this.handles[i], this.element).show(); + } + + //Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls) + if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) { + + axis = $(this.handles[i], this.element); + + //Checking the correct pad and border + padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth(); + + //The padding type i have to apply... + padPos = [ "padding", + /ne|nw|n/.test(i) ? "Top" : + /se|sw|s/.test(i) ? "Bottom" : + /^e$/.test(i) ? "Right" : "Left" ].join(""); + + target.css(padPos, padWrapper); + + this._proportionallyResize(); + + } + + //TODO: What's that good for? There's not anything to be executed left + if(!$(this.handles[i]).length) { + continue; + } + } + }; + + //TODO: make renderAxis a prototype function + this._renderAxis(this.element); + + this._handles = $(".ui-resizable-handle", this.element) + .disableSelection(); + + //Matching axis name + this._handles.mouseover(function() { + if (!that.resizing) { + if (this.className) { + axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i); + } + //Axis, default = se + that.axis = axis && axis[1] ? axis[1] : "se"; + } + }); + + //If we want to auto hide the elements + if (o.autoHide) { + this._handles.hide(); + $(this.element) + .addClass("ui-resizable-autohide") + .mouseenter(function() { + if (o.disabled) { + return; + } + $(this).removeClass("ui-resizable-autohide"); + that._handles.show(); + }) + .mouseleave(function(){ + if (o.disabled) { + return; + } + if (!that.resizing) { + $(this).addClass("ui-resizable-autohide"); + that._handles.hide(); + } + }); + } + + //Initialize the mouse interaction + this._mouseInit(); + + }, + + _destroy: function() { + + this._mouseDestroy(); + + var wrapper, + _destroy = function(exp) { + $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing") + .removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove(); + }; + + //TODO: Unwrap at same DOM position + if (this.elementIsWrapper) { + _destroy(this.element); + wrapper = this.element; + this.originalElement.css({ + position: wrapper.css("position"), + width: wrapper.outerWidth(), + height: wrapper.outerHeight(), + top: wrapper.css("top"), + left: wrapper.css("left") + }).insertAfter( wrapper ); + wrapper.remove(); + } + + this.originalElement.css("resize", this.originalResizeStyle); + _destroy(this.originalElement); + + return this; + }, + + _mouseCapture: function(event) { + var i, handle, + capture = false; + + for (i in this.handles) { + handle = $(this.handles[i])[0]; + if (handle === event.target || $.contains(handle, event.target)) { + capture = true; + } + } + + return !this.options.disabled && capture; + }, + + _mouseStart: function(event) { + + var curleft, curtop, cursor, + o = this.options, + iniPos = this.element.position(), + el = this.element; + + this.resizing = true; + + // bugfix for http://dev.jquery.com/ticket/1749 + if ( (/absolute/).test( el.css("position") ) ) { + el.css({ position: "absolute", top: el.css("top"), left: el.css("left") }); + } else if (el.is(".ui-draggable")) { + el.css({ position: "absolute", top: iniPos.top, left: iniPos.left }); + } + + this._renderProxy(); + + curleft = num(this.helper.css("left")); + curtop = num(this.helper.css("top")); + + if (o.containment) { + curleft += $(o.containment).scrollLeft() || 0; + curtop += $(o.containment).scrollTop() || 0; + } + + //Store needed variables + this.offset = this.helper.offset(); + this.position = { left: curleft, top: curtop }; + this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() }; + this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() }; + this.originalPosition = { left: curleft, top: curtop }; + this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() }; + this.originalMousePosition = { left: event.pageX, top: event.pageY }; + + //Aspect Ratio + this.aspectRatio = (typeof o.aspectRatio === "number") ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1); + + cursor = $(".ui-resizable-" + this.axis).css("cursor"); + $("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor); + + el.addClass("ui-resizable-resizing"); + this._propagate("start", event); + return true; + }, + + _mouseDrag: function(event) { + + //Increase performance, avoid regex + var data, + el = this.helper, props = {}, + smp = this.originalMousePosition, + a = this.axis, + prevTop = this.position.top, + prevLeft = this.position.left, + prevWidth = this.size.width, + prevHeight = this.size.height, + dx = (event.pageX-smp.left)||0, + dy = (event.pageY-smp.top)||0, + trigger = this._change[a]; + + if (!trigger) { + return false; + } + + // Calculate the attrs that will be change + data = trigger.apply(this, [event, dx, dy]); + + // Put this in the mouseDrag handler since the user can start pressing shift while resizing + this._updateVirtualBoundaries(event.shiftKey); + if (this._aspectRatio || event.shiftKey) { + data = this._updateRatio(data, event); + } + + data = this._respectSize(data, event); + + this._updateCache(data); + + // plugins callbacks need to be called first + this._propagate("resize", event); + + if (this.position.top !== prevTop) { + props.top = this.position.top + "px"; + } + if (this.position.left !== prevLeft) { + props.left = this.position.left + "px"; + } + if (this.size.width !== prevWidth) { + props.width = this.size.width + "px"; + } + if (this.size.height !== prevHeight) { + props.height = this.size.height + "px"; + } + el.css(props); + + if (!this._helper && this._proportionallyResizeElements.length) { + this._proportionallyResize(); + } + + // Call the user callback if the element was resized + if ( ! $.isEmptyObject(props) ) { + this._trigger("resize", event, this.ui()); + } + + return false; + }, + + _mouseStop: function(event) { + + this.resizing = false; + var pr, ista, soffseth, soffsetw, s, left, top, + o = this.options, that = this; + + if(this._helper) { + + pr = this._proportionallyResizeElements; + ista = pr.length && (/textarea/i).test(pr[0].nodeName); + soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height; + soffsetw = ista ? 0 : that.sizeDiff.width; + + s = { width: (that.helper.width() - soffsetw), height: (that.helper.height() - soffseth) }; + left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null; + top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null; + + if (!o.animate) { + this.element.css($.extend(s, { top: top, left: left })); + } + + that.helper.height(that.size.height); + that.helper.width(that.size.width); + + if (this._helper && !o.animate) { + this._proportionallyResize(); + } + } + + $("body").css("cursor", "auto"); + + this.element.removeClass("ui-resizable-resizing"); + + this._propagate("stop", event); + + if (this._helper) { + this.helper.remove(); + } + + return false; + + }, + + _updateVirtualBoundaries: function(forceAspectRatio) { + var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b, + o = this.options; + + b = { + minWidth: isNumber(o.minWidth) ? o.minWidth : 0, + maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity, + minHeight: isNumber(o.minHeight) ? o.minHeight : 0, + maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity + }; + + if(this._aspectRatio || forceAspectRatio) { + // We want to create an enclosing box whose aspect ration is the requested one + // First, compute the "projected" size for each dimension based on the aspect ratio and other dimension + pMinWidth = b.minHeight * this.aspectRatio; + pMinHeight = b.minWidth / this.aspectRatio; + pMaxWidth = b.maxHeight * this.aspectRatio; + pMaxHeight = b.maxWidth / this.aspectRatio; + + if(pMinWidth > b.minWidth) { + b.minWidth = pMinWidth; + } + if(pMinHeight > b.minHeight) { + b.minHeight = pMinHeight; + } + if(pMaxWidth < b.maxWidth) { + b.maxWidth = pMaxWidth; + } + if(pMaxHeight < b.maxHeight) { + b.maxHeight = pMaxHeight; + } + } + this._vBoundaries = b; + }, + + _updateCache: function(data) { + this.offset = this.helper.offset(); + if (isNumber(data.left)) { + this.position.left = data.left; + } + if (isNumber(data.top)) { + this.position.top = data.top; + } + if (isNumber(data.height)) { + this.size.height = data.height; + } + if (isNumber(data.width)) { + this.size.width = data.width; + } + }, + + _updateRatio: function( data ) { + + var cpos = this.position, + csize = this.size, + a = this.axis; + + if (isNumber(data.height)) { + data.width = (data.height * this.aspectRatio); + } else if (isNumber(data.width)) { + data.height = (data.width / this.aspectRatio); + } + + if (a === "sw") { + data.left = cpos.left + (csize.width - data.width); + data.top = null; + } + if (a === "nw") { + data.top = cpos.top + (csize.height - data.height); + data.left = cpos.left + (csize.width - data.width); + } + + return data; + }, + + _respectSize: function( data ) { + + var o = this._vBoundaries, + a = this.axis, + ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height), + isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height), + dw = this.originalPosition.left + this.originalSize.width, + dh = this.position.top + this.size.height, + cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a); + if (isminw) { + data.width = o.minWidth; + } + if (isminh) { + data.height = o.minHeight; + } + if (ismaxw) { + data.width = o.maxWidth; + } + if (ismaxh) { + data.height = o.maxHeight; + } + + if (isminw && cw) { + data.left = dw - o.minWidth; + } + if (ismaxw && cw) { + data.left = dw - o.maxWidth; + } + if (isminh && ch) { + data.top = dh - o.minHeight; + } + if (ismaxh && ch) { + data.top = dh - o.maxHeight; + } + + // fixing jump error on top/left - bug #2330 + if (!data.width && !data.height && !data.left && data.top) { + data.top = null; + } else if (!data.width && !data.height && !data.top && data.left) { + data.left = null; + } + + return data; + }, + + _proportionallyResize: function() { + + if (!this._proportionallyResizeElements.length) { + return; + } + + var i, j, borders, paddings, prel, + element = this.helper || this.element; + + for ( i=0; i < this._proportionallyResizeElements.length; i++) { + + prel = this._proportionallyResizeElements[i]; + + if (!this.borderDif) { + this.borderDif = []; + borders = [prel.css("borderTopWidth"), prel.css("borderRightWidth"), prel.css("borderBottomWidth"), prel.css("borderLeftWidth")]; + paddings = [prel.css("paddingTop"), prel.css("paddingRight"), prel.css("paddingBottom"), prel.css("paddingLeft")]; + + for ( j = 0; j < borders.length; j++ ) { + this.borderDif[ j ] = ( parseInt( borders[ j ], 10 ) || 0 ) + ( parseInt( paddings[ j ], 10 ) || 0 ); + } + } + + prel.css({ + height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0, + width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0 + }); + + } + + }, + + _renderProxy: function() { + + var el = this.element, o = this.options; + this.elementOffset = el.offset(); + + if(this._helper) { + + this.helper = this.helper || $("<div style='overflow:hidden;'></div>"); + + this.helper.addClass(this._helper).css({ + width: this.element.outerWidth() - 1, + height: this.element.outerHeight() - 1, + position: "absolute", + left: this.elementOffset.left +"px", + top: this.elementOffset.top +"px", + zIndex: ++o.zIndex //TODO: Don't modify option + }); + + this.helper + .appendTo("body") + .disableSelection(); + + } else { + this.helper = this.element; + } + + }, + + _change: { + e: function(event, dx) { + return { width: this.originalSize.width + dx }; + }, + w: function(event, dx) { + var cs = this.originalSize, sp = this.originalPosition; + return { left: sp.left + dx, width: cs.width - dx }; + }, + n: function(event, dx, dy) { + var cs = this.originalSize, sp = this.originalPosition; + return { top: sp.top + dy, height: cs.height - dy }; + }, + s: function(event, dx, dy) { + return { height: this.originalSize.height + dy }; + }, + se: function(event, dx, dy) { + return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); + }, + sw: function(event, dx, dy) { + return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); + }, + ne: function(event, dx, dy) { + return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); + }, + nw: function(event, dx, dy) { + return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); + } + }, + + _propagate: function(n, event) { + $.ui.plugin.call(this, n, [event, this.ui()]); + (n !== "resize" && this._trigger(n, event, this.ui())); + }, + + plugins: {}, + + ui: function() { + return { + originalElement: this.originalElement, + element: this.element, + helper: this.helper, + position: this.position, + size: this.size, + originalSize: this.originalSize, + originalPosition: this.originalPosition + }; + } + +}); + +/* + * Resizable Extensions + */ + +$.ui.plugin.add("resizable", "animate", { + + stop: function( event ) { + var that = $(this).data("ui-resizable"), + o = that.options, + pr = that._proportionallyResizeElements, + ista = pr.length && (/textarea/i).test(pr[0].nodeName), + soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height, + soffsetw = ista ? 0 : that.sizeDiff.width, + style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) }, + left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null, + top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null; + + that.element.animate( + $.extend(style, top && left ? { top: top, left: left } : {}), { + duration: o.animateDuration, + easing: o.animateEasing, + step: function() { + + var data = { + width: parseInt(that.element.css("width"), 10), + height: parseInt(that.element.css("height"), 10), + top: parseInt(that.element.css("top"), 10), + left: parseInt(that.element.css("left"), 10) + }; + + if (pr && pr.length) { + $(pr[0]).css({ width: data.width, height: data.height }); + } + + // propagating resize, and updating values for each animation step + that._updateCache(data); + that._propagate("resize", event); + + } + } + ); + } + +}); + +$.ui.plugin.add("resizable", "containment", { + + start: function() { + var element, p, co, ch, cw, width, height, + that = $(this).data("ui-resizable"), + o = that.options, + el = that.element, + oc = o.containment, + ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc; + + if (!ce) { + return; + } + + that.containerElement = $(ce); + + if (/document/.test(oc) || oc === document) { + that.containerOffset = { left: 0, top: 0 }; + that.containerPosition = { left: 0, top: 0 }; + + that.parentData = { + element: $(document), left: 0, top: 0, + width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight + }; + } + + // i'm a node, so compute top, left, right, bottom + else { + element = $(ce); + p = []; + $([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); }); + + that.containerOffset = element.offset(); + that.containerPosition = element.position(); + that.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) }; + + co = that.containerOffset; + ch = that.containerSize.height; + cw = that.containerSize.width; + width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ); + height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch); + + that.parentData = { + element: ce, left: co.left, top: co.top, width: width, height: height + }; + } + }, + + resize: function( event ) { + var woset, hoset, isParent, isOffsetRelative, + that = $(this).data("ui-resizable"), + o = that.options, + co = that.containerOffset, cp = that.position, + pRatio = that._aspectRatio || event.shiftKey, + cop = { top:0, left:0 }, ce = that.containerElement; + + if (ce[0] !== document && (/static/).test(ce.css("position"))) { + cop = co; + } + + if (cp.left < (that._helper ? co.left : 0)) { + that.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left)); + if (pRatio) { + that.size.height = that.size.width / that.aspectRatio; + } + that.position.left = o.helper ? co.left : 0; + } + + if (cp.top < (that._helper ? co.top : 0)) { + that.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top); + if (pRatio) { + that.size.width = that.size.height * that.aspectRatio; + } + that.position.top = that._helper ? co.top : 0; + } + + that.offset.left = that.parentData.left+that.position.left; + that.offset.top = that.parentData.top+that.position.top; + + woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ); + hoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height ); + + isParent = that.containerElement.get(0) === that.element.parent().get(0); + isOffsetRelative = /relative|absolute/.test(that.containerElement.css("position")); + + if(isParent && isOffsetRelative) { + woset -= that.parentData.left; + } + + if (woset + that.size.width >= that.parentData.width) { + that.size.width = that.parentData.width - woset; + if (pRatio) { + that.size.height = that.size.width / that.aspectRatio; + } + } + + if (hoset + that.size.height >= that.parentData.height) { + that.size.height = that.parentData.height - hoset; + if (pRatio) { + that.size.width = that.size.height * that.aspectRatio; + } + } + }, + + stop: function(){ + var that = $(this).data("ui-resizable"), + o = that.options, + co = that.containerOffset, + cop = that.containerPosition, + ce = that.containerElement, + helper = $(that.helper), + ho = helper.offset(), + w = helper.outerWidth() - that.sizeDiff.width, + h = helper.outerHeight() - that.sizeDiff.height; + + if (that._helper && !o.animate && (/relative/).test(ce.css("position"))) { + $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); + } + + if (that._helper && !o.animate && (/static/).test(ce.css("position"))) { + $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); + } + + } +}); + +$.ui.plugin.add("resizable", "alsoResize", { + + start: function () { + var that = $(this).data("ui-resizable"), + o = that.options, + _store = function (exp) { + $(exp).each(function() { + var el = $(this); + el.data("ui-resizable-alsoresize", { + width: parseInt(el.width(), 10), height: parseInt(el.height(), 10), + left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10) + }); + }); + }; + + if (typeof(o.alsoResize) === "object" && !o.alsoResize.parentNode) { + if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); } + else { $.each(o.alsoResize, function (exp) { _store(exp); }); } + }else{ + _store(o.alsoResize); + } + }, + + resize: function (event, ui) { + var that = $(this).data("ui-resizable"), + o = that.options, + os = that.originalSize, + op = that.originalPosition, + delta = { + height: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0, + top: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0 + }, + + _alsoResize = function (exp, c) { + $(exp).each(function() { + var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {}, + css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"]; + + $.each(css, function (i, prop) { + var sum = (start[prop]||0) + (delta[prop]||0); + if (sum && sum >= 0) { + style[prop] = sum || null; + } + }); + + el.css(style); + }); + }; + + if (typeof(o.alsoResize) === "object" && !o.alsoResize.nodeType) { + $.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); }); + }else{ + _alsoResize(o.alsoResize); + } + }, + + stop: function () { + $(this).removeData("resizable-alsoresize"); + } +}); + +$.ui.plugin.add("resizable", "ghost", { + + start: function() { + + var that = $(this).data("ui-resizable"), o = that.options, cs = that.size; + + that.ghost = that.originalElement.clone(); + that.ghost + .css({ opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 }) + .addClass("ui-resizable-ghost") + .addClass(typeof o.ghost === "string" ? o.ghost : ""); + + that.ghost.appendTo(that.helper); + + }, + + resize: function(){ + var that = $(this).data("ui-resizable"); + if (that.ghost) { + that.ghost.css({ position: "relative", height: that.size.height, width: that.size.width }); + } + }, + + stop: function() { + var that = $(this).data("ui-resizable"); + if (that.ghost && that.helper) { + that.helper.get(0).removeChild(that.ghost.get(0)); + } + } + +}); + +$.ui.plugin.add("resizable", "grid", { + + resize: function() { + var that = $(this).data("ui-resizable"), + o = that.options, + cs = that.size, + os = that.originalSize, + op = that.originalPosition, + a = that.axis, + grid = typeof o.grid === "number" ? [o.grid, o.grid] : o.grid, + gridX = (grid[0]||1), + gridY = (grid[1]||1), + ox = Math.round((cs.width - os.width) / gridX) * gridX, + oy = Math.round((cs.height - os.height) / gridY) * gridY, + newWidth = os.width + ox, + newHeight = os.height + oy, + isMaxWidth = o.maxWidth && (o.maxWidth < newWidth), + isMaxHeight = o.maxHeight && (o.maxHeight < newHeight), + isMinWidth = o.minWidth && (o.minWidth > newWidth), + isMinHeight = o.minHeight && (o.minHeight > newHeight); + + o.grid = grid; + + if (isMinWidth) { + newWidth = newWidth + gridX; + } + if (isMinHeight) { + newHeight = newHeight + gridY; + } + if (isMaxWidth) { + newWidth = newWidth - gridX; + } + if (isMaxHeight) { + newHeight = newHeight - gridY; + } + + if (/^(se|s|e)$/.test(a)) { + that.size.width = newWidth; + that.size.height = newHeight; + } else if (/^(ne)$/.test(a)) { + that.size.width = newWidth; + that.size.height = newHeight; + that.position.top = op.top - oy; + } else if (/^(sw)$/.test(a)) { + that.size.width = newWidth; + that.size.height = newHeight; + that.position.left = op.left - ox; + } else { + that.size.width = newWidth; + that.size.height = newHeight; + that.position.top = op.top - oy; + that.position.left = op.left - ox; + } + } + +}); + +})(jQuery); +(function( $, undefined ) { + +$.widget("ui.selectable", $.ui.mouse, { + version: "1.10.0", + options: { + appendTo: "body", + autoRefresh: true, + distance: 0, + filter: "*", + tolerance: "touch", + + // callbacks + selected: null, + selecting: null, + start: null, + stop: null, + unselected: null, + unselecting: null + }, + _create: function() { + var selectees, + that = this; + + this.element.addClass("ui-selectable"); + + this.dragged = false; + + // cache selectee children based on filter + this.refresh = function() { + selectees = $(that.options.filter, that.element[0]); + selectees.addClass("ui-selectee"); + selectees.each(function() { + var $this = $(this), + pos = $this.offset(); + $.data(this, "selectable-item", { + element: this, + $element: $this, + left: pos.left, + top: pos.top, + right: pos.left + $this.outerWidth(), + bottom: pos.top + $this.outerHeight(), + startselected: false, + selected: $this.hasClass("ui-selected"), + selecting: $this.hasClass("ui-selecting"), + unselecting: $this.hasClass("ui-unselecting") + }); + }); + }; + this.refresh(); + + this.selectees = selectees.addClass("ui-selectee"); + + this._mouseInit(); + + this.helper = $("<div class='ui-selectable-helper'></div>"); + }, + + _destroy: function() { + this.selectees + .removeClass("ui-selectee") + .removeData("selectable-item"); + this.element + .removeClass("ui-selectable ui-selectable-disabled"); + this._mouseDestroy(); + }, + + _mouseStart: function(event) { + var that = this, + options = this.options; + + this.opos = [event.pageX, event.pageY]; + + if (this.options.disabled) { + return; + } + + this.selectees = $(options.filter, this.element[0]); + + this._trigger("start", event); + + $(options.appendTo).append(this.helper); + // position helper (lasso) + this.helper.css({ + "left": event.pageX, + "top": event.pageY, + "width": 0, + "height": 0 + }); + + if (options.autoRefresh) { + this.refresh(); + } + + this.selectees.filter(".ui-selected").each(function() { + var selectee = $.data(this, "selectable-item"); + selectee.startselected = true; + if (!event.metaKey && !event.ctrlKey) { + selectee.$element.removeClass("ui-selected"); + selectee.selected = false; + selectee.$element.addClass("ui-unselecting"); + selectee.unselecting = true; + // selectable UNSELECTING callback + that._trigger("unselecting", event, { + unselecting: selectee.element + }); + } + }); + + $(event.target).parents().addBack().each(function() { + var doSelect, + selectee = $.data(this, "selectable-item"); + if (selectee) { + doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass("ui-selected"); + selectee.$element + .removeClass(doSelect ? "ui-unselecting" : "ui-selected") + .addClass(doSelect ? "ui-selecting" : "ui-unselecting"); + selectee.unselecting = !doSelect; + selectee.selecting = doSelect; + selectee.selected = doSelect; + // selectable (UN)SELECTING callback + if (doSelect) { + that._trigger("selecting", event, { + selecting: selectee.element + }); + } else { + that._trigger("unselecting", event, { + unselecting: selectee.element + }); + } + return false; + } + }); + + }, + + _mouseDrag: function(event) { + + this.dragged = true; + + if (this.options.disabled) { + return; + } + + var tmp, + that = this, + options = this.options, + x1 = this.opos[0], + y1 = this.opos[1], + x2 = event.pageX, + y2 = event.pageY; + + if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; } + if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; } + this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1}); + + this.selectees.each(function() { + var selectee = $.data(this, "selectable-item"), + hit = false; + + //prevent helper from being selected if appendTo: selectable + if (!selectee || selectee.element === that.element[0]) { + return; + } + + if (options.tolerance === "touch") { + hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) ); + } else if (options.tolerance === "fit") { + hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2); + } + + if (hit) { + // SELECT + if (selectee.selected) { + selectee.$element.removeClass("ui-selected"); + selectee.selected = false; + } + if (selectee.unselecting) { + selectee.$element.removeClass("ui-unselecting"); + selectee.unselecting = false; + } + if (!selectee.selecting) { + selectee.$element.addClass("ui-selecting"); + selectee.selecting = true; + // selectable SELECTING callback + that._trigger("selecting", event, { + selecting: selectee.element + }); + } + } else { + // UNSELECT + if (selectee.selecting) { + if ((event.metaKey || event.ctrlKey) && selectee.startselected) { + selectee.$element.removeClass("ui-selecting"); + selectee.selecting = false; + selectee.$element.addClass("ui-selected"); + selectee.selected = true; + } else { + selectee.$element.removeClass("ui-selecting"); + selectee.selecting = false; + if (selectee.startselected) { + selectee.$element.addClass("ui-unselecting"); + selectee.unselecting = true; + } + // selectable UNSELECTING callback + that._trigger("unselecting", event, { + unselecting: selectee.element + }); + } + } + if (selectee.selected) { + if (!event.metaKey && !event.ctrlKey && !selectee.startselected) { + selectee.$element.removeClass("ui-selected"); + selectee.selected = false; + + selectee.$element.addClass("ui-unselecting"); + selectee.unselecting = true; + // selectable UNSELECTING callback + that._trigger("unselecting", event, { + unselecting: selectee.element + }); + } + } + } + }); + + return false; + }, + + _mouseStop: function(event) { + var that = this; + + this.dragged = false; + + $(".ui-unselecting", this.element[0]).each(function() { + var selectee = $.data(this, "selectable-item"); + selectee.$element.removeClass("ui-unselecting"); + selectee.unselecting = false; + selectee.startselected = false; + that._trigger("unselected", event, { + unselected: selectee.element + }); + }); + $(".ui-selecting", this.element[0]).each(function() { + var selectee = $.data(this, "selectable-item"); + selectee.$element.removeClass("ui-selecting").addClass("ui-selected"); + selectee.selecting = false; + selectee.selected = true; + selectee.startselected = true; + that._trigger("selected", event, { + selected: selectee.element + }); + }); + this._trigger("stop", event); + + this.helper.remove(); + + return false; + } + +}); + +})(jQuery); +(function( $, undefined ) { + +/*jshint loopfunc: true */ + +function isOverAxis( x, reference, size ) { + return ( x > reference ) && ( x < ( reference + size ) ); +} + +$.widget("ui.sortable", $.ui.mouse, { + version: "1.10.0", + widgetEventPrefix: "sort", + ready: false, + options: { + appendTo: "parent", + axis: false, + connectWith: false, + containment: false, + cursor: "auto", + cursorAt: false, + dropOnEmpty: true, + forcePlaceholderSize: false, + forceHelperSize: false, + grid: false, + handle: false, + helper: "original", + items: "> *", + opacity: false, + placeholder: false, + revert: false, + scroll: true, + scrollSensitivity: 20, + scrollSpeed: 20, + scope: "default", + tolerance: "intersect", + zIndex: 1000, + + // callbacks + activate: null, + beforeStop: null, + change: null, + deactivate: null, + out: null, + over: null, + receive: null, + remove: null, + sort: null, + start: null, + stop: null, + update: null + }, + _create: function() { + + var o = this.options; + this.containerCache = {}; + this.element.addClass("ui-sortable"); + + //Get the items + this.refresh(); + + //Let's determine if the items are being displayed horizontally + this.floating = this.items.length ? o.axis === "x" || (/left|right/).test(this.items[0].item.css("float")) || (/inline|table-cell/).test(this.items[0].item.css("display")) : false; + + //Let's determine the parent's offset + this.offset = this.element.offset(); + + //Initialize mouse events for interaction + this._mouseInit(); + + //We're ready to go + this.ready = true; + + }, + + _destroy: function() { + this.element + .removeClass("ui-sortable ui-sortable-disabled"); + this._mouseDestroy(); + + for ( var i = this.items.length - 1; i >= 0; i-- ) { + this.items[i].item.removeData(this.widgetName + "-item"); + } + + return this; + }, + + _setOption: function(key, value){ + if ( key === "disabled" ) { + this.options[ key ] = value; + + this.widget().toggleClass( "ui-sortable-disabled", !!value ); + } else { + // Don't call widget base _setOption for disable as it adds ui-state-disabled class + $.Widget.prototype._setOption.apply(this, arguments); + } + }, + + _mouseCapture: function(event, overrideHandle) { + var currentItem = null, + validHandle = false, + that = this; + + if (this.reverting) { + return false; + } + + if(this.options.disabled || this.options.type === "static") { + return false; + } + + //We have to refresh the items data once first + this._refreshItems(event); + + //Find out if the clicked node (or one of its parents) is a actual item in this.items + $(event.target).parents().each(function() { + if($.data(this, that.widgetName + "-item") === that) { + currentItem = $(this); + return false; + } + }); + if($.data(event.target, that.widgetName + "-item") === that) { + currentItem = $(event.target); + } + + if(!currentItem) { + return false; + } + if(this.options.handle && !overrideHandle) { + $(this.options.handle, currentItem).find("*").addBack().each(function() { + if(this === event.target) { + validHandle = true; + } + }); + if(!validHandle) { + return false; + } + } + + this.currentItem = currentItem; + this._removeCurrentsFromItems(); + return true; + + }, + + _mouseStart: function(event, overrideHandle, noActivation) { + + var i, + o = this.options; + + this.currentContainer = this; + + //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture + this.refreshPositions(); + + //Create and append the visible helper + this.helper = this._createHelper(event); + + //Cache the helper size + this._cacheHelperProportions(); + + /* + * - Position generation - + * This block generates everything position related - it's the core of draggables. + */ + + //Cache the margins of the original element + this._cacheMargins(); + + //Get the next scrolling parent + this.scrollParent = this.helper.scrollParent(); + + //The element's absolute position on the page minus margins + this.offset = this.currentItem.offset(); + this.offset = { + top: this.offset.top - this.margins.top, + left: this.offset.left - this.margins.left + }; + + $.extend(this.offset, { + click: { //Where the click happened, relative to the element + left: event.pageX - this.offset.left, + top: event.pageY - this.offset.top + }, + parent: this._getParentOffset(), + relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper + }); + + // Only after we got the offset, we can change the helper's position to absolute + // TODO: Still need to figure out a way to make relative sorting possible + this.helper.css("position", "absolute"); + this.cssPosition = this.helper.css("position"); + + //Generate the original position + this.originalPosition = this._generatePosition(event); + this.originalPageX = event.pageX; + this.originalPageY = event.pageY; + + //Adjust the mouse offset relative to the helper if "cursorAt" is supplied + (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); + + //Cache the former DOM position + this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] }; + + //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way + if(this.helper[0] !== this.currentItem[0]) { + this.currentItem.hide(); + } + + //Create the placeholder + this._createPlaceholder(); + + //Set a containment if given in the options + if(o.containment) { + this._setContainment(); + } + + if(o.cursor) { // cursor option + if ($("body").css("cursor")) { + this._storedCursor = $("body").css("cursor"); + } + $("body").css("cursor", o.cursor); + } + + if(o.opacity) { // opacity option + if (this.helper.css("opacity")) { + this._storedOpacity = this.helper.css("opacity"); + } + this.helper.css("opacity", o.opacity); + } + + if(o.zIndex) { // zIndex option + if (this.helper.css("zIndex")) { + this._storedZIndex = this.helper.css("zIndex"); + } + this.helper.css("zIndex", o.zIndex); + } + + //Prepare scrolling + if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") { + this.overflowOffset = this.scrollParent.offset(); + } + + //Call callbacks + this._trigger("start", event, this._uiHash()); + + //Recache the helper size + if(!this._preserveHelperProportions) { + this._cacheHelperProportions(); + } + + + //Post "activate" events to possible containers + if( !noActivation ) { + for ( i = this.containers.length - 1; i >= 0; i-- ) { + this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) ); + } + } + + //Prepare possible droppables + if($.ui.ddmanager) { + $.ui.ddmanager.current = this; + } + + if ($.ui.ddmanager && !o.dropBehaviour) { + $.ui.ddmanager.prepareOffsets(this, event); + } + + this.dragging = true; + + this.helper.addClass("ui-sortable-helper"); + this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position + return true; + + }, + + _mouseDrag: function(event) { + var i, item, itemElement, intersection, + o = this.options, + scrolled = false; + + //Compute the helpers position + this.position = this._generatePosition(event); + this.positionAbs = this._convertPositionTo("absolute"); + + if (!this.lastPositionAbs) { + this.lastPositionAbs = this.positionAbs; + } + + //Do scrolling + if(this.options.scroll) { + if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") { + + if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) { + this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed; + } else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) { + this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; + } + + if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) { + this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed; + } else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) { + this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed; + } + + } else { + + if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) { + scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); + } else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) { + scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); + } + + if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) { + scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); + } else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) { + scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); + } + + } + + if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) { + $.ui.ddmanager.prepareOffsets(this, event); + } + } + + //Regenerate the absolute position used for position checks + this.positionAbs = this._convertPositionTo("absolute"); + + //Set the helper position + if(!this.options.axis || this.options.axis !== "y") { + this.helper[0].style.left = this.position.left+"px"; + } + if(!this.options.axis || this.options.axis !== "x") { + this.helper[0].style.top = this.position.top+"px"; + } + + //Rearrange + for (i = this.items.length - 1; i >= 0; i--) { + + //Cache variables and intersection, continue if no intersection + item = this.items[i]; + itemElement = item.item[0]; + intersection = this._intersectsWithPointer(item); + if (!intersection) { + continue; + } + + // Only put the placeholder inside the current Container, skip all + // items form other containers. This works because when moving + // an item from one container to another the + // currentContainer is switched before the placeholder is moved. + // + // Without this moving items in "sub-sortables" can cause the placeholder to jitter + // beetween the outer and inner container. + if (item.instance !== this.currentContainer) { + continue; + } + + // cannot intersect with itself + // no useless actions that have been done before + // no action if the item moved is the parent of the item checked + if (itemElement !== this.currentItem[0] && + this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement && + !$.contains(this.placeholder[0], itemElement) && + (this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true) + ) { + + this.direction = intersection === 1 ? "down" : "up"; + + if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) { + this._rearrange(event, item); + } else { + break; + } + + this._trigger("change", event, this._uiHash()); + break; + } + } + + //Post events to containers + this._contactContainers(event); + + //Interconnect with droppables + if($.ui.ddmanager) { + $.ui.ddmanager.drag(this, event); + } + + //Call callbacks + this._trigger("sort", event, this._uiHash()); + + this.lastPositionAbs = this.positionAbs; + return false; + + }, + + _mouseStop: function(event, noPropagation) { + + if(!event) { + return; + } + + //If we are using droppables, inform the manager about the drop + if ($.ui.ddmanager && !this.options.dropBehaviour) { + $.ui.ddmanager.drop(this, event); + } + + if(this.options.revert) { + var that = this, + cur = this.placeholder.offset(); + + this.reverting = true; + + $(this.helper).animate({ + left: cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft), + top: cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop) + }, parseInt(this.options.revert, 10) || 500, function() { + that._clear(event); + }); + } else { + this._clear(event, noPropagation); + } + + return false; + + }, + + cancel: function() { + + if(this.dragging) { + + this._mouseUp({ target: null }); + + if(this.options.helper === "original") { + this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); + } else { + this.currentItem.show(); + } + + //Post deactivating events to containers + for (var i = this.containers.length - 1; i >= 0; i--){ + this.containers[i]._trigger("deactivate", null, this._uiHash(this)); + if(this.containers[i].containerCache.over) { + this.containers[i]._trigger("out", null, this._uiHash(this)); + this.containers[i].containerCache.over = 0; + } + } + + } + + if (this.placeholder) { + //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! + if(this.placeholder[0].parentNode) { + this.placeholder[0].parentNode.removeChild(this.placeholder[0]); + } + if(this.options.helper !== "original" && this.helper && this.helper[0].parentNode) { + this.helper.remove(); + } + + $.extend(this, { + helper: null, + dragging: false, + reverting: false, + _noFinalSort: null + }); + + if(this.domPosition.prev) { + $(this.domPosition.prev).after(this.currentItem); + } else { + $(this.domPosition.parent).prepend(this.currentItem); + } + } + + return this; + + }, + + serialize: function(o) { + + var items = this._getItemsAsjQuery(o && o.connected), + str = []; + o = o || {}; + + $(items).each(function() { + var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/)); + if (res) { + str.push((o.key || res[1]+"[]")+"="+(o.key && o.expression ? res[1] : res[2])); + } + }); + + if(!str.length && o.key) { + str.push(o.key + "="); + } + + return str.join("&"); + + }, + + toArray: function(o) { + + var items = this._getItemsAsjQuery(o && o.connected), + ret = []; + + o = o || {}; + + items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); }); + return ret; + + }, + + /* Be careful with the following core functions */ + _intersectsWith: function(item) { + + var x1 = this.positionAbs.left, + x2 = x1 + this.helperProportions.width, + y1 = this.positionAbs.top, + y2 = y1 + this.helperProportions.height, + l = item.left, + r = l + item.width, + t = item.top, + b = t + item.height, + dyClick = this.offset.click.top, + dxClick = this.offset.click.left, + isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r; + + if ( this.options.tolerance === "pointer" || + this.options.forcePointerForContainers || + (this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"]) + ) { + return isOverElement; + } else { + + return (l < x1 + (this.helperProportions.width / 2) && // Right Half + x2 - (this.helperProportions.width / 2) < r && // Left Half + t < y1 + (this.helperProportions.height / 2) && // Bottom Half + y2 - (this.helperProportions.height / 2) < b ); // Top Half + + } + }, + + _intersectsWithPointer: function(item) { + + var isOverElementHeight = (this.options.axis === "x") || isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), + isOverElementWidth = (this.options.axis === "y") || isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width), + isOverElement = isOverElementHeight && isOverElementWidth, + verticalDirection = this._getDragVerticalDirection(), + horizontalDirection = this._getDragHorizontalDirection(); + + if (!isOverElement) { + return false; + } + + return this.floating ? + ( ((horizontalDirection && horizontalDirection === "right") || verticalDirection === "down") ? 2 : 1 ) + : ( verticalDirection && (verticalDirection === "down" ? 2 : 1) ); + + }, + + _intersectsWithSides: function(item) { + + var isOverBottomHalf = isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height), + isOverRightHalf = isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width), + verticalDirection = this._getDragVerticalDirection(), + horizontalDirection = this._getDragHorizontalDirection(); + + if (this.floating && horizontalDirection) { + return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf)); + } else { + return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf)); + } + + }, + + _getDragVerticalDirection: function() { + var delta = this.positionAbs.top - this.lastPositionAbs.top; + return delta !== 0 && (delta > 0 ? "down" : "up"); + }, + + _getDragHorizontalDirection: function() { + var delta = this.positionAbs.left - this.lastPositionAbs.left; + return delta !== 0 && (delta > 0 ? "right" : "left"); + }, + + refresh: function(event) { + this._refreshItems(event); + this.refreshPositions(); + return this; + }, + + _connectWith: function() { + var options = this.options; + return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith; + }, + + _getItemsAsjQuery: function(connected) { + + var i, j, cur, inst, + items = [], + queries = [], + connectWith = this._connectWith(); + + if(connectWith && connected) { + for (i = connectWith.length - 1; i >= 0; i--){ + cur = $(connectWith[i]); + for ( j = cur.length - 1; j >= 0; j--){ + inst = $.data(cur[j], this.widgetFullName); + if(inst && inst !== this && !inst.options.disabled) { + queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]); + } + } + } + } + + queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]); + + for (i = queries.length - 1; i >= 0; i--){ + queries[i][0].each(function() { + items.push(this); + }); + } + + return $(items); + + }, + + _removeCurrentsFromItems: function() { + + var list = this.currentItem.find(":data(" + this.widgetName + "-item)"); + + this.items = $.grep(this.items, function (item) { + for (var j=0; j < list.length; j++) { + if(list[j] === item.item[0]) { + return false; + } + } + return true; + }); + + }, + + _refreshItems: function(event) { + + this.items = []; + this.containers = [this]; + + var i, j, cur, inst, targetData, _queries, item, queriesLength, + items = this.items, + queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]], + connectWith = this._connectWith(); + + if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down + for (i = connectWith.length - 1; i >= 0; i--){ + cur = $(connectWith[i]); + for (j = cur.length - 1; j >= 0; j--){ + inst = $.data(cur[j], this.widgetFullName); + if(inst && inst !== this && !inst.options.disabled) { + queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]); + this.containers.push(inst); + } + } + } + } + + for (i = queries.length - 1; i >= 0; i--) { + targetData = queries[i][1]; + _queries = queries[i][0]; + + for (j=0, queriesLength = _queries.length; j < queriesLength; j++) { + item = $(_queries[j]); + + item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager) + + items.push({ + item: item, + instance: targetData, + width: 0, height: 0, + left: 0, top: 0 + }); + } + } + + }, + + refreshPositions: function(fast) { + + //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change + if(this.offsetParent && this.helper) { + this.offset.parent = this._getParentOffset(); + } + + var i, item, t, p; + + for (i = this.items.length - 1; i >= 0; i--){ + item = this.items[i]; + + //We ignore calculating positions of all connected containers when we're not over them + if(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) { + continue; + } + + t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; + + if (!fast) { + item.width = t.outerWidth(); + item.height = t.outerHeight(); + } + + p = t.offset(); + item.left = p.left; + item.top = p.top; + } + + if(this.options.custom && this.options.custom.refreshContainers) { + this.options.custom.refreshContainers.call(this); + } else { + for (i = this.containers.length - 1; i >= 0; i--){ + p = this.containers[i].element.offset(); + this.containers[i].containerCache.left = p.left; + this.containers[i].containerCache.top = p.top; + this.containers[i].containerCache.width = this.containers[i].element.outerWidth(); + this.containers[i].containerCache.height = this.containers[i].element.outerHeight(); + } + } + + return this; + }, + + _createPlaceholder: function(that) { + that = that || this; + var className, + o = that.options; + + if(!o.placeholder || o.placeholder.constructor === String) { + className = o.placeholder; + o.placeholder = { + element: function() { + + var el = $(document.createElement(that.currentItem[0].nodeName)) + .addClass(className || that.currentItem[0].className+" ui-sortable-placeholder") + .removeClass("ui-sortable-helper")[0]; + + if(!className) { + el.style.visibility = "hidden"; + } + + return el; + }, + update: function(container, p) { + + // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that + // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified + if(className && !o.forcePlaceholderSize) { + return; + } + + //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item + if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); } + if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); } + } + }; + } + + //Create the placeholder + that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem)); + + //Append it after the actual current item + that.currentItem.after(that.placeholder); + + //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) + o.placeholder.update(that, that.placeholder); + + }, + + _contactContainers: function(event) { + var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, base, cur, nearBottom, + innermostContainer = null, + innermostIndex = null; + + // get innermost container that intersects with item + for (i = this.containers.length - 1; i >= 0; i--) { + + // never consider a container that's located within the item itself + if($.contains(this.currentItem[0], this.containers[i].element[0])) { + continue; + } + + if(this._intersectsWith(this.containers[i].containerCache)) { + + // if we've already found a container and it's more "inner" than this, then continue + if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) { + continue; + } + + innermostContainer = this.containers[i]; + innermostIndex = i; + + } else { + // container doesn't intersect. trigger "out" event if necessary + if(this.containers[i].containerCache.over) { + this.containers[i]._trigger("out", event, this._uiHash(this)); + this.containers[i].containerCache.over = 0; + } + } + + } + + // if no intersecting containers found, return + if(!innermostContainer) { + return; + } + + // move the item into the container if it's not there already + if(this.containers.length === 1) { + this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); + this.containers[innermostIndex].containerCache.over = 1; + } else { + + //When entering a new container, we will find the item with the least distance and append our item near it + dist = 10000; + itemWithLeastDistance = null; + posProperty = this.containers[innermostIndex].floating ? "left" : "top"; + sizeProperty = this.containers[innermostIndex].floating ? "width" : "height"; + base = this.positionAbs[posProperty] + this.offset.click[posProperty]; + for (j = this.items.length - 1; j >= 0; j--) { + if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) { + continue; + } + if(this.items[j].item[0] === this.currentItem[0]) { + continue; + } + cur = this.items[j].item.offset()[posProperty]; + nearBottom = false; + if(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){ + nearBottom = true; + cur += this.items[j][sizeProperty]; + } + + if(Math.abs(cur - base) < dist) { + dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j]; + this.direction = nearBottom ? "up": "down"; + } + } + + //Check if dropOnEmpty is enabled + if(!itemWithLeastDistance && !this.options.dropOnEmpty) { + return; + } + + this.currentContainer = this.containers[innermostIndex]; + itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); + this._trigger("change", event, this._uiHash()); + this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); + + //Update the placeholder + this.options.placeholder.update(this.currentContainer, this.placeholder); + + this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); + this.containers[innermostIndex].containerCache.over = 1; + } + + + }, + + _createHelper: function(event) { + + var o = this.options, + helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem); + + //Add the helper to the DOM if that didn't happen already + if(!helper.parents("body").length) { + $(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); + } + + if(helper[0] === this.currentItem[0]) { + this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") }; + } + + if(!helper[0].style.width || o.forceHelperSize) { + helper.width(this.currentItem.width()); + } + if(!helper[0].style.height || o.forceHelperSize) { + helper.height(this.currentItem.height()); + } + + return helper; + + }, + + _adjustOffsetFromHelper: function(obj) { + if (typeof obj === "string") { + obj = obj.split(" "); + } + if ($.isArray(obj)) { + obj = {left: +obj[0], top: +obj[1] || 0}; + } + if ("left" in obj) { + this.offset.click.left = obj.left + this.margins.left; + } + if ("right" in obj) { + this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; + } + if ("top" in obj) { + this.offset.click.top = obj.top + this.margins.top; + } + if ("bottom" in obj) { + this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; + } + }, + + _getParentOffset: function() { + + + //Get the offsetParent and cache its position + this.offsetParent = this.helper.offsetParent(); + var po = this.offsetParent.offset(); + + // This is a special case where we need to modify a offset calculated on start, since the following happened: + // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent + // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that + // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag + if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) { + po.left += this.scrollParent.scrollLeft(); + po.top += this.scrollParent.scrollTop(); + } + + // This needs to be actually done for all browsers, since pageX/pageY includes this information + // with an ugly IE fix + if( this.offsetParent[0] === document.body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) { + po = { top: 0, left: 0 }; + } + + return { + top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), + left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0) + }; + + }, + + _getRelativeOffset: function() { + + if(this.cssPosition === "relative") { + var p = this.currentItem.position(); + return { + top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), + left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft() + }; + } else { + return { top: 0, left: 0 }; + } + + }, + + _cacheMargins: function() { + this.margins = { + left: (parseInt(this.currentItem.css("marginLeft"),10) || 0), + top: (parseInt(this.currentItem.css("marginTop"),10) || 0) + }; + }, + + _cacheHelperProportions: function() { + this.helperProportions = { + width: this.helper.outerWidth(), + height: this.helper.outerHeight() + }; + }, + + _setContainment: function() { + + var ce, co, over, + o = this.options; + if(o.containment === "parent") { + o.containment = this.helper[0].parentNode; + } + if(o.containment === "document" || o.containment === "window") { + this.containment = [ + 0 - this.offset.relative.left - this.offset.parent.left, + 0 - this.offset.relative.top - this.offset.parent.top, + $(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left, + ($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top + ]; + } + + if(!(/^(document|window|parent)$/).test(o.containment)) { + ce = $(o.containment)[0]; + co = $(o.containment).offset(); + over = ($(ce).css("overflow") !== "hidden"); + + this.containment = [ + co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left, + co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top, + co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left, + co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top + ]; + } + + }, + + _convertPositionTo: function(d, pos) { + + if(!pos) { + pos = this.position; + } + var mod = d === "absolute" ? 1 : -1, + scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, + scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); + + return { + top: ( + pos.top + // The absolute mouse position + this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod) + ), + left: ( + pos.left + // The absolute mouse position + this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) + ) + }; + + }, + + _generatePosition: function(event) { + + var top, left, + o = this.options, + pageX = event.pageX, + pageY = event.pageY, + scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); + + // This is another very weird special case that only happens for relative elements: + // 1. If the css position is relative + // 2. and the scroll parent is the document or similar to the offset parent + // we have to refresh the relative offset during the scroll so there are no jumps + if(this.cssPosition === "relative" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) { + this.offset.relative = this._getRelativeOffset(); + } + + /* + * - Position constraining - + * Constrain the position to a mix of grid, containment. + */ + + if(this.originalPosition) { //If we are not dragging yet, we won't check for options + + if(this.containment) { + if(event.pageX - this.offset.click.left < this.containment[0]) { + pageX = this.containment[0] + this.offset.click.left; + } + if(event.pageY - this.offset.click.top < this.containment[1]) { + pageY = this.containment[1] + this.offset.click.top; + } + if(event.pageX - this.offset.click.left > this.containment[2]) { + pageX = this.containment[2] + this.offset.click.left; + } + if(event.pageY - this.offset.click.top > this.containment[3]) { + pageY = this.containment[3] + this.offset.click.top; + } + } + + if(o.grid) { + top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; + pageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; + + left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; + pageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; + } + + } + + return { + top: ( + pageY - // The absolute mouse position + this.offset.click.top - // Click offset (relative to the element) + this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.top + // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) + ), + left: ( + pageX - // The absolute mouse position + this.offset.click.left - // Click offset (relative to the element) + this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.left + // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) + ) + }; + + }, + + _rearrange: function(event, i, a, hardRefresh) { + + a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling)); + + //Various things done here to improve the performance: + // 1. we create a setTimeout, that calls refreshPositions + // 2. on the instance, we have a counter variable, that get's higher after every append + // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same + // 4. this lets only the last addition to the timeout stack through + this.counter = this.counter ? ++this.counter : 1; + var counter = this.counter; + + this._delay(function() { + if(counter === this.counter) { + this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove + } + }); + + }, + + _clear: function(event, noPropagation) { + + this.reverting = false; + // We delay all events that have to be triggered to after the point where the placeholder has been removed and + // everything else normalized again + var i, + delayedTriggers = []; + + // We first have to update the dom position of the actual currentItem + // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088) + if(!this._noFinalSort && this.currentItem.parent().length) { + this.placeholder.before(this.currentItem); + } + this._noFinalSort = null; + + if(this.helper[0] === this.currentItem[0]) { + for(i in this._storedCSS) { + if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") { + this._storedCSS[i] = ""; + } + } + this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); + } else { + this.currentItem.show(); + } + + if(this.fromOutside && !noPropagation) { + delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); }); + } + if((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) { + delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed + } + + // Check if the items Container has Changed and trigger appropriate + // events. + if (this !== this.currentContainer) { + if(!noPropagation) { + delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); }); + delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); + delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); + } + } + + + //Post events to containers + for (i = this.containers.length - 1; i >= 0; i--){ + if(!noPropagation) { + delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); }; }).call(this, this.containers[i])); + } + if(this.containers[i].containerCache.over) { + delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); }; }).call(this, this.containers[i])); + this.containers[i].containerCache.over = 0; + } + } + + //Do what was originally in plugins + if(this._storedCursor) { + $("body").css("cursor", this._storedCursor); + } + if(this._storedOpacity) { + this.helper.css("opacity", this._storedOpacity); + } + if(this._storedZIndex) { + this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex); + } + + this.dragging = false; + if(this.cancelHelperRemoval) { + if(!noPropagation) { + this._trigger("beforeStop", event, this._uiHash()); + for (i=0; i < delayedTriggers.length; i++) { + delayedTriggers[i].call(this, event); + } //Trigger all delayed events + this._trigger("stop", event, this._uiHash()); + } + + this.fromOutside = false; + return false; + } + + if(!noPropagation) { + this._trigger("beforeStop", event, this._uiHash()); + } + + //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! + this.placeholder[0].parentNode.removeChild(this.placeholder[0]); + + if(this.helper[0] !== this.currentItem[0]) { + this.helper.remove(); + } + this.helper = null; + + if(!noPropagation) { + for (i=0; i < delayedTriggers.length; i++) { + delayedTriggers[i].call(this, event); + } //Trigger all delayed events + this._trigger("stop", event, this._uiHash()); + } + + this.fromOutside = false; + return true; + + }, + + _trigger: function() { + if ($.Widget.prototype._trigger.apply(this, arguments) === false) { + this.cancel(); + } + }, + + _uiHash: function(_inst) { + var inst = _inst || this; + return { + helper: inst.helper, + placeholder: inst.placeholder || $([]), + position: inst.position, + originalPosition: inst.originalPosition, + offset: inst.positionAbs, + item: inst.currentItem, + sender: _inst ? _inst.element : null + }; + } + +}); + +})(jQuery); +(function( $, undefined ) { + +var uid = 0, + hideProps = {}, + showProps = {}; + +hideProps.height = hideProps.paddingTop = hideProps.paddingBottom = + hideProps.borderTopWidth = hideProps.borderBottomWidth = "hide"; +showProps.height = showProps.paddingTop = showProps.paddingBottom = + showProps.borderTopWidth = showProps.borderBottomWidth = "show"; + +$.widget( "ui.accordion", { + version: "1.10.0", + options: { + active: 0, + animate: {}, + collapsible: false, + event: "click", + header: "> li > :first-child,> :not(li):even", + heightStyle: "auto", + icons: { + activeHeader: "ui-icon-triangle-1-s", + header: "ui-icon-triangle-1-e" + }, + + // callbacks + activate: null, + beforeActivate: null + }, + + _create: function() { + var options = this.options; + this.prevShow = this.prevHide = $(); + this.element.addClass( "ui-accordion ui-widget ui-helper-reset" ) + // ARIA + .attr( "role", "tablist" ); + + // don't allow collapsible: false and active: false / null + if ( !options.collapsible && (options.active === false || options.active == null) ) { + options.active = 0; + } + + this._processPanels(); + // handle negative values + if ( options.active < 0 ) { + options.active += this.headers.length; + } + this._refresh(); + }, + + _getCreateEventData: function() { + return { + header: this.active, + content: !this.active.length ? $() : this.active.next() + }; + }, + + _createIcons: function() { + var icons = this.options.icons; + if ( icons ) { + $( "<span>" ) + .addClass( "ui-accordion-header-icon ui-icon " + icons.header ) + .prependTo( this.headers ); + this.active.children( ".ui-accordion-header-icon" ) + .removeClass( icons.header ) + .addClass( icons.activeHeader ); + this.headers.addClass( "ui-accordion-icons" ); + } + }, + + _destroyIcons: function() { + this.headers + .removeClass( "ui-accordion-icons" ) + .children( ".ui-accordion-header-icon" ) + .remove(); + }, + + _destroy: function() { + var contents; + + // clean up main element + this.element + .removeClass( "ui-accordion ui-widget ui-helper-reset" ) + .removeAttr( "role" ); + + // clean up headers + this.headers + .removeClass( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" ) + .removeAttr( "role" ) + .removeAttr( "aria-selected" ) + .removeAttr( "aria-controls" ) + .removeAttr( "tabIndex" ) + .each(function() { + if ( /^ui-accordion/.test( this.id ) ) { + this.removeAttribute( "id" ); + } + }); + this._destroyIcons(); + + // clean up content panels + contents = this.headers.next() + .css( "display", "" ) + .removeAttr( "role" ) + .removeAttr( "aria-expanded" ) + .removeAttr( "aria-hidden" ) + .removeAttr( "aria-labelledby" ) + .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" ) + .each(function() { + if ( /^ui-accordion/.test( this.id ) ) { + this.removeAttribute( "id" ); + } + }); + if ( this.options.heightStyle !== "content" ) { + contents.css( "height", "" ); + } + }, + + _setOption: function( key, value ) { + if ( key === "active" ) { + // _activate() will handle invalid values and update this.options + this._activate( value ); + return; + } + + if ( key === "event" ) { + if ( this.options.event ) { + this._off( this.headers, this.options.event ); + } + this._setupEvents( value ); + } + + this._super( key, value ); + + // setting collapsible: false while collapsed; open first panel + if ( key === "collapsible" && !value && this.options.active === false ) { + this._activate( 0 ); + } + + if ( key === "icons" ) { + this._destroyIcons(); + if ( value ) { + this._createIcons(); + } + } + + // #5332 - opacity doesn't cascade to positioned elements in IE + // so we need to add the disabled class to the headers and panels + if ( key === "disabled" ) { + this.headers.add( this.headers.next() ) + .toggleClass( "ui-state-disabled", !!value ); + } + }, + + _keydown: function( event ) { + /*jshint maxcomplexity:15*/ + if ( event.altKey || event.ctrlKey ) { + return; + } + + var keyCode = $.ui.keyCode, + length = this.headers.length, + currentIndex = this.headers.index( event.target ), + toFocus = false; + + switch ( event.keyCode ) { + case keyCode.RIGHT: + case keyCode.DOWN: + toFocus = this.headers[ ( currentIndex + 1 ) % length ]; + break; + case keyCode.LEFT: + case keyCode.UP: + toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; + break; + case keyCode.SPACE: + case keyCode.ENTER: + this._eventHandler( event ); + break; + case keyCode.HOME: + toFocus = this.headers[ 0 ]; + break; + case keyCode.END: + toFocus = this.headers[ length - 1 ]; + break; + } + + if ( toFocus ) { + $( event.target ).attr( "tabIndex", -1 ); + $( toFocus ).attr( "tabIndex", 0 ); + toFocus.focus(); + event.preventDefault(); + } + }, + + _panelKeyDown : function( event ) { + if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { + $( event.currentTarget ).prev().focus(); + } + }, + + refresh: function() { + var options = this.options; + this._processPanels(); + + // was collapsed or no panel + if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) { + options.active = false; + this.active = $(); + // active false only when collapsible is true + } if ( options.active === false ) { + this._activate( 0 ); + // was active, but active panel is gone + } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { + // all remaining panel are disabled + if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) { + options.active = false; + this.active = $(); + // activate previous panel + } else { + this._activate( Math.max( 0, options.active - 1 ) ); + } + // was active, active panel still exists + } else { + // make sure active index is correct + options.active = this.headers.index( this.active ); + } + + this._destroyIcons(); + + this._refresh(); + }, + + _processPanels: function() { + this.headers = this.element.find( this.options.header ) + .addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" ); + + this.headers.next() + .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ) + .filter(":not(.ui-accordion-content-active)") + .hide(); + }, + + _refresh: function() { + var maxHeight, + options = this.options, + heightStyle = options.heightStyle, + parent = this.element.parent(), + accordionId = this.accordionId = "ui-accordion-" + + (this.element.attr( "id" ) || ++uid); + + this.active = this._findActive( options.active ) + .addClass( "ui-accordion-header-active ui-state-active" ) + .toggleClass( "ui-corner-all ui-corner-top" ); + this.active.next() + .addClass( "ui-accordion-content-active" ) + .show(); + + this.headers + .attr( "role", "tab" ) + .each(function( i ) { + var header = $( this ), + headerId = header.attr( "id" ), + panel = header.next(), + panelId = panel.attr( "id" ); + if ( !headerId ) { + headerId = accordionId + "-header-" + i; + header.attr( "id", headerId ); + } + if ( !panelId ) { + panelId = accordionId + "-panel-" + i; + panel.attr( "id", panelId ); + } + header.attr( "aria-controls", panelId ); + panel.attr( "aria-labelledby", headerId ); + }) + .next() + .attr( "role", "tabpanel" ); + + this.headers + .not( this.active ) + .attr({ + "aria-selected": "false", + tabIndex: -1 + }) + .next() + .attr({ + "aria-expanded": "false", + "aria-hidden": "true" + }) + .hide(); + + // make sure at least one header is in the tab order + if ( !this.active.length ) { + this.headers.eq( 0 ).attr( "tabIndex", 0 ); + } else { + this.active.attr({ + "aria-selected": "true", + tabIndex: 0 + }) + .next() + .attr({ + "aria-expanded": "true", + "aria-hidden": "false" + }); + } + + this._createIcons(); + + this._setupEvents( options.event ); + + if ( heightStyle === "fill" ) { + maxHeight = parent.height(); + this.element.siblings( ":visible" ).each(function() { + var elem = $( this ), + position = elem.css( "position" ); + + if ( position === "absolute" || position === "fixed" ) { + return; + } + maxHeight -= elem.outerHeight( true ); + }); + + this.headers.each(function() { + maxHeight -= $( this ).outerHeight( true ); + }); + + this.headers.next() + .each(function() { + $( this ).height( Math.max( 0, maxHeight - + $( this ).innerHeight() + $( this ).height() ) ); + }) + .css( "overflow", "auto" ); + } else if ( heightStyle === "auto" ) { + maxHeight = 0; + this.headers.next() + .each(function() { + maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); + }) + .height( maxHeight ); + } + }, + + _activate: function( index ) { + var active = this._findActive( index )[ 0 ]; + + // trying to activate the already active panel + if ( active === this.active[ 0 ] ) { + return; + } + + // trying to collapse, simulate a click on the currently active header + active = active || this.active[ 0 ]; + + this._eventHandler({ + target: active, + currentTarget: active, + preventDefault: $.noop + }); + }, + + _findActive: function( selector ) { + return typeof selector === "number" ? this.headers.eq( selector ) : $(); + }, + + _setupEvents: function( event ) { + var events = { + keydown: "_keydown" + }; + if ( event ) { + $.each( event.split(" "), function( index, eventName ) { + events[ eventName ] = "_eventHandler"; + }); + } + + this._off( this.headers.add( this.headers.next() ) ); + this._on( this.headers, events ); + this._on( this.headers.next(), { keydown: "_panelKeyDown" }); + this._hoverable( this.headers ); + this._focusable( this.headers ); + }, + + _eventHandler: function( event ) { + var options = this.options, + active = this.active, + clicked = $( event.currentTarget ), + clickedIsActive = clicked[ 0 ] === active[ 0 ], + collapsing = clickedIsActive && options.collapsible, + toShow = collapsing ? $() : clicked.next(), + toHide = active.next(), + eventData = { + oldHeader: active, + oldPanel: toHide, + newHeader: collapsing ? $() : clicked, + newPanel: toShow + }; + + event.preventDefault(); + + if ( + // click on active header, but not collapsible + ( clickedIsActive && !options.collapsible ) || + // allow canceling activation + ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { + return; + } + + options.active = collapsing ? false : this.headers.index( clicked ); + + // when the call to ._toggle() comes after the class changes + // it causes a very odd bug in IE 8 (see #6720) + this.active = clickedIsActive ? $() : clicked; + this._toggle( eventData ); + + // switch classes + // corner classes on the previously active header stay after the animation + active.removeClass( "ui-accordion-header-active ui-state-active" ); + if ( options.icons ) { + active.children( ".ui-accordion-header-icon" ) + .removeClass( options.icons.activeHeader ) + .addClass( options.icons.header ); + } + + if ( !clickedIsActive ) { + clicked + .removeClass( "ui-corner-all" ) + .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ); + if ( options.icons ) { + clicked.children( ".ui-accordion-header-icon" ) + .removeClass( options.icons.header ) + .addClass( options.icons.activeHeader ); + } + + clicked + .next() + .addClass( "ui-accordion-content-active" ); + } + }, + + _toggle: function( data ) { + var toShow = data.newPanel, + toHide = this.prevShow.length ? this.prevShow : data.oldPanel; + + // handle activating a panel during the animation for another activation + this.prevShow.add( this.prevHide ).stop( true, true ); + this.prevShow = toShow; + this.prevHide = toHide; + + if ( this.options.animate ) { + this._animate( toShow, toHide, data ); + } else { + toHide.hide(); + toShow.show(); + this._toggleComplete( data ); + } + + toHide.attr({ + "aria-expanded": "false", + "aria-hidden": "true" + }); + toHide.prev().attr( "aria-selected", "false" ); + // if we're switching panels, remove the old header from the tab order + // if we're opening from collapsed state, remove the previous header from the tab order + // if we're collapsing, then keep the collapsing header in the tab order + if ( toShow.length && toHide.length ) { + toHide.prev().attr( "tabIndex", -1 ); + } else if ( toShow.length ) { + this.headers.filter(function() { + return $( this ).attr( "tabIndex" ) === 0; + }) + .attr( "tabIndex", -1 ); + } + + toShow + .attr({ + "aria-expanded": "true", + "aria-hidden": "false" + }) + .prev() + .attr({ + "aria-selected": "true", + tabIndex: 0 + }); + }, + + _animate: function( toShow, toHide, data ) { + var total, easing, duration, + that = this, + adjust = 0, + down = toShow.length && + ( !toHide.length || ( toShow.index() < toHide.index() ) ), + animate = this.options.animate || {}, + options = down && animate.down || animate, + complete = function() { + that._toggleComplete( data ); + }; + + if ( typeof options === "number" ) { + duration = options; + } + if ( typeof options === "string" ) { + easing = options; + } + // fall back from options to animation in case of partial down settings + easing = easing || options.easing || animate.easing; + duration = duration || options.duration || animate.duration; + + if ( !toHide.length ) { + return toShow.animate( showProps, duration, easing, complete ); + } + if ( !toShow.length ) { + return toHide.animate( hideProps, duration, easing, complete ); + } + + total = toShow.show().outerHeight(); + toHide.animate( hideProps, { + duration: duration, + easing: easing, + step: function( now, fx ) { + fx.now = Math.round( now ); + } + }); + toShow + .hide() + .animate( showProps, { + duration: duration, + easing: easing, + complete: complete, + step: function( now, fx ) { + fx.now = Math.round( now ); + if ( fx.prop !== "height" ) { + adjust += fx.now; + } else if ( that.options.heightStyle !== "content" ) { + fx.now = Math.round( total - toHide.outerHeight() - adjust ); + adjust = 0; + } + } + }); + }, + + _toggleComplete: function( data ) { + var toHide = data.oldPanel; + + toHide + .removeClass( "ui-accordion-content-active" ) + .prev() + .removeClass( "ui-corner-top" ) + .addClass( "ui-corner-all" ); + + // Work around for rendering bug in IE (#5421) + if ( toHide.length ) { + toHide.parent()[0].className = toHide.parent()[0].className; + } + + this._trigger( "activate", null, data ); + } +}); + +})( jQuery ); +(function( $, undefined ) { + +// used to prevent race conditions with remote data sources +var requestIndex = 0; + +$.widget( "ui.autocomplete", { + version: "1.10.0", + defaultElement: "<input>", + options: { + appendTo: null, + autoFocus: false, + delay: 300, + minLength: 1, + position: { + my: "left top", + at: "left bottom", + collision: "none" + }, + source: null, + + // callbacks + change: null, + close: null, + focus: null, + open: null, + response: null, + search: null, + select: null + }, + + pending: 0, + + _create: function() { + // Some browsers only repeat keydown events, not keypress events, + // so we use the suppressKeyPress flag to determine if we've already + // handled the keydown event. #7269 + // Unfortunately the code for & in keypress is the same as the up arrow, + // so we use the suppressKeyPressRepeat flag to avoid handling keypress + // events when we know the keydown event was used to modify the + // search term. #7799 + var suppressKeyPress, suppressKeyPressRepeat, suppressInput; + + this.isMultiLine = this._isMultiLine(); + this.valueMethod = this.element[ this.element.is( "input,textarea" ) ? "val" : "text" ]; + this.isNewMenu = true; + + this.element + .addClass( "ui-autocomplete-input" ) + .attr( "autocomplete", "off" ); + + this._on( this.element, { + keydown: function( event ) { + /*jshint maxcomplexity:15*/ + if ( this.element.prop( "readOnly" ) ) { + suppressKeyPress = true; + suppressInput = true; + suppressKeyPressRepeat = true; + return; + } + + suppressKeyPress = false; + suppressInput = false; + suppressKeyPressRepeat = false; + var keyCode = $.ui.keyCode; + switch( event.keyCode ) { + case keyCode.PAGE_UP: + suppressKeyPress = true; + this._move( "previousPage", event ); + break; + case keyCode.PAGE_DOWN: + suppressKeyPress = true; + this._move( "nextPage", event ); + break; + case keyCode.UP: + suppressKeyPress = true; + this._keyEvent( "previous", event ); + break; + case keyCode.DOWN: + suppressKeyPress = true; + this._keyEvent( "next", event ); + break; + case keyCode.ENTER: + case keyCode.NUMPAD_ENTER: + // when menu is open and has focus + if ( this.menu.active ) { + // #6055 - Opera still allows the keypress to occur + // which causes forms to submit + suppressKeyPress = true; + event.preventDefault(); + this.menu.select( event ); + } + break; + case keyCode.TAB: + if ( this.menu.active ) { + this.menu.select( event ); + } + break; + case keyCode.ESCAPE: + if ( this.menu.element.is( ":visible" ) ) { + this._value( this.term ); + this.close( event ); + // Different browsers have different default behavior for escape + // Single press can mean undo or clear + // Double press in IE means clear the whole form + event.preventDefault(); + } + break; + default: + suppressKeyPressRepeat = true; + // search timeout should be triggered before the input value is changed + this._searchTimeout( event ); + break; + } + }, + keypress: function( event ) { + if ( suppressKeyPress ) { + suppressKeyPress = false; + event.preventDefault(); + return; + } + if ( suppressKeyPressRepeat ) { + return; + } + + // replicate some key handlers to allow them to repeat in Firefox and Opera + var keyCode = $.ui.keyCode; + switch( event.keyCode ) { + case keyCode.PAGE_UP: + this._move( "previousPage", event ); + break; + case keyCode.PAGE_DOWN: + this._move( "nextPage", event ); + break; + case keyCode.UP: + this._keyEvent( "previous", event ); + break; + case keyCode.DOWN: + this._keyEvent( "next", event ); + break; + } + }, + input: function( event ) { + if ( suppressInput ) { + suppressInput = false; + event.preventDefault(); + return; + } + this._searchTimeout( event ); + }, + focus: function() { + this.selectedItem = null; + this.previous = this._value(); + }, + blur: function( event ) { + if ( this.cancelBlur ) { + delete this.cancelBlur; + return; + } + + clearTimeout( this.searching ); + this.close( event ); + this._change( event ); + } + }); + + this._initSource(); + this.menu = $( "<ul>" ) + .addClass( "ui-autocomplete" ) + .appendTo( this._appendTo() ) + .menu({ + // custom key handling for now + input: $(), + // disable ARIA support, the live region takes care of that + role: null + }) + .zIndex( this.element.zIndex() + 1 ) + .hide() + .data( "ui-menu" ); + + this._on( this.menu.element, { + mousedown: function( event ) { + // prevent moving focus out of the text field + event.preventDefault(); + + // IE doesn't prevent moving focus even with event.preventDefault() + // so we set a flag to know when we should ignore the blur event + this.cancelBlur = true; + this._delay(function() { + delete this.cancelBlur; + }); + + // clicking on the scrollbar causes focus to shift to the body + // but we can't detect a mouseup or a click immediately afterward + // so we have to track the next mousedown and close the menu if + // the user clicks somewhere outside of the autocomplete + var menuElement = this.menu.element[ 0 ]; + if ( !$( event.target ).closest( ".ui-menu-item" ).length ) { + this._delay(function() { + var that = this; + this.document.one( "mousedown", function( event ) { + if ( event.target !== that.element[ 0 ] && + event.target !== menuElement && + !$.contains( menuElement, event.target ) ) { + that.close(); + } + }); + }); + } + }, + menufocus: function( event, ui ) { + // #7024 - Prevent accidental activation of menu items in Firefox + if ( this.isNewMenu ) { + this.isNewMenu = false; + if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) { + this.menu.blur(); + + this.document.one( "mousemove", function() { + $( event.target ).trigger( event.originalEvent ); + }); + + return; + } + } + + var item = ui.item.data( "ui-autocomplete-item" ); + if ( false !== this._trigger( "focus", event, { item: item } ) ) { + // use value to match what will end up in the input, if it was a key event + if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) { + this._value( item.value ); + } + } else { + // Normally the input is populated with the item's value as the + // menu is navigated, causing screen readers to notice a change and + // announce the item. Since the focus event was canceled, this doesn't + // happen, so we update the live region so that screen readers can + // still notice the change and announce it. + this.liveRegion.text( item.value ); + } + }, + menuselect: function( event, ui ) { + var item = ui.item.data( "ui-autocomplete-item" ), + previous = this.previous; + + // only trigger when focus was lost (click on menu) + if ( this.element[0] !== this.document[0].activeElement ) { + this.element.focus(); + this.previous = previous; + // #6109 - IE triggers two focus events and the second + // is asynchronous, so we need to reset the previous + // term synchronously and asynchronously :-( + this._delay(function() { + this.previous = previous; + this.selectedItem = item; + }); + } + + if ( false !== this._trigger( "select", event, { item: item } ) ) { + this._value( item.value ); + } + // reset the term after the select event + // this allows custom select handling to work properly + this.term = this._value(); + + this.close( event ); + this.selectedItem = item; + } + }); + + this.liveRegion = $( "<span>", { + role: "status", + "aria-live": "polite" + }) + .addClass( "ui-helper-hidden-accessible" ) + .insertAfter( this.element ); + + // turning off autocomplete prevents the browser from remembering the + // value when navigating through history, so we re-enable autocomplete + // if the page is unloaded before the widget is destroyed. #7790 + this._on( this.window, { + beforeunload: function() { + this.element.removeAttr( "autocomplete" ); + } + }); + }, + + _destroy: function() { + clearTimeout( this.searching ); + this.element + .removeClass( "ui-autocomplete-input" ) + .removeAttr( "autocomplete" ); + this.menu.element.remove(); + this.liveRegion.remove(); + }, + + _setOption: function( key, value ) { + this._super( key, value ); + if ( key === "source" ) { + this._initSource(); + } + if ( key === "appendTo" ) { + this.menu.element.appendTo( this._appendTo() ); + } + if ( key === "disabled" && value && this.xhr ) { + this.xhr.abort(); + } + }, + + _appendTo: function() { + var element = this.options.appendTo; + + if ( element ) { + element = element.jquery || element.nodeType ? + $( element ) : + this.document.find( element ).eq( 0 ); + } + + if ( !element ) { + element = this.element.closest( ".ui-front" ); + } + + if ( !element.length ) { + element = this.document[0].body; + } + + return element; + }, + + _isMultiLine: function() { + // Textareas are always multi-line + if ( this.element.is( "textarea" ) ) { + return true; + } + // Inputs are always single-line, even if inside a contentEditable element + // IE also treats inputs as contentEditable + if ( this.element.is( "input" ) ) { + return false; + } + // All other element types are determined by whether or not they're contentEditable + return this.element.prop( "isContentEditable" ); + }, + + _initSource: function() { + var array, url, + that = this; + if ( $.isArray(this.options.source) ) { + array = this.options.source; + this.source = function( request, response ) { + response( $.ui.autocomplete.filter( array, request.term ) ); + }; + } else if ( typeof this.options.source === "string" ) { + url = this.options.source; + this.source = function( request, response ) { + if ( that.xhr ) { + that.xhr.abort(); + } + that.xhr = $.ajax({ + url: url, + data: request, + dataType: "json", + success: function( data ) { + response( data ); + }, + error: function() { + response( [] ); + } + }); + }; + } else { + this.source = this.options.source; + } + }, + + _searchTimeout: function( event ) { + clearTimeout( this.searching ); + this.searching = this._delay(function() { + // only search if the value has changed + if ( this.term !== this._value() ) { + this.selectedItem = null; + this.search( null, event ); + } + }, this.options.delay ); + }, + + search: function( value, event ) { + value = value != null ? value : this._value(); + + // always save the actual value, not the one passed as an argument + this.term = this._value(); + + if ( value.length < this.options.minLength ) { + return this.close( event ); + } + + if ( this._trigger( "search", event ) === false ) { + return; + } + + return this._search( value ); + }, + + _search: function( value ) { + this.pending++; + this.element.addClass( "ui-autocomplete-loading" ); + this.cancelSearch = false; + + this.source( { term: value }, this._response() ); + }, + + _response: function() { + var that = this, + index = ++requestIndex; + + return function( content ) { + if ( index === requestIndex ) { + that.__response( content ); + } + + that.pending--; + if ( !that.pending ) { + that.element.removeClass( "ui-autocomplete-loading" ); + } + }; + }, + + __response: function( content ) { + if ( content ) { + content = this._normalize( content ); + } + this._trigger( "response", null, { content: content } ); + if ( !this.options.disabled && content && content.length && !this.cancelSearch ) { + this._suggest( content ); + this._trigger( "open" ); + } else { + // use ._close() instead of .close() so we don't cancel future searches + this._close(); + } + }, + + close: function( event ) { + this.cancelSearch = true; + this._close( event ); + }, + + _close: function( event ) { + if ( this.menu.element.is( ":visible" ) ) { + this.menu.element.hide(); + this.menu.blur(); + this.isNewMenu = true; + this._trigger( "close", event ); + } + }, + + _change: function( event ) { + if ( this.previous !== this._value() ) { + this._trigger( "change", event, { item: this.selectedItem } ); + } + }, + + _normalize: function( items ) { + // assume all items have the right format when the first item is complete + if ( items.length && items[0].label && items[0].value ) { + return items; + } + return $.map( items, function( item ) { + if ( typeof item === "string" ) { + return { + label: item, + value: item + }; + } + return $.extend({ + label: item.label || item.value, + value: item.value || item.label + }, item ); + }); + }, + + _suggest: function( items ) { + var ul = this.menu.element + .empty() + .zIndex( this.element.zIndex() + 1 ); + this._renderMenu( ul, items ); + this.menu.refresh(); + + // size and position menu + ul.show(); + this._resizeMenu(); + ul.position( $.extend({ + of: this.element + }, this.options.position )); + + if ( this.options.autoFocus ) { + this.menu.next(); + } + }, + + _resizeMenu: function() { + var ul = this.menu.element; + ul.outerWidth( Math.max( + // Firefox wraps long text (possibly a rounding bug) + // so we add 1px to avoid the wrapping (#7513) + ul.width( "" ).outerWidth() + 1, + this.element.outerWidth() + ) ); + }, + + _renderMenu: function( ul, items ) { + var that = this; + $.each( items, function( index, item ) { + that._renderItemData( ul, item ); + }); + }, + + _renderItemData: function( ul, item ) { + return this._renderItem( ul, item ).data( "ui-autocomplete-item", item ); + }, + + _renderItem: function( ul, item ) { + return $( "<li>" ) + .append( $( "<a>" ).text( item.label ) ) + .appendTo( ul ); + }, + + _move: function( direction, event ) { + if ( !this.menu.element.is( ":visible" ) ) { + this.search( null, event ); + return; + } + if ( this.menu.isFirstItem() && /^previous/.test( direction ) || + this.menu.isLastItem() && /^next/.test( direction ) ) { + this._value( this.term ); + this.menu.blur(); + return; + } + this.menu[ direction ]( event ); + }, + + widget: function() { + return this.menu.element; + }, + + _value: function() { + return this.valueMethod.apply( this.element, arguments ); + }, + + _keyEvent: function( keyEvent, event ) { + if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { + this._move( keyEvent, event ); + + // prevents moving cursor to beginning/end of the text field in some browsers + event.preventDefault(); + } + } +}); + +$.extend( $.ui.autocomplete, { + escapeRegex: function( value ) { + return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); + }, + filter: function(array, term) { + var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" ); + return $.grep( array, function(value) { + return matcher.test( value.label || value.value || value ); + }); + } +}); + + +// live region extension, adding a `messages` option +// NOTE: This is an experimental API. We are still investigating +// a full solution for string manipulation and internationalization. +$.widget( "ui.autocomplete", $.ui.autocomplete, { + options: { + messages: { + noResults: "No search results.", + results: function( amount ) { + return amount + ( amount > 1 ? " results are" : " result is" ) + + " available, use up and down arrow keys to navigate."; + } + } + }, + + __response: function( content ) { + var message; + this._superApply( arguments ); + if ( this.options.disabled || this.cancelSearch ) { + return; + } + if ( content && content.length ) { + message = this.options.messages.results( content.length ); + } else { + message = this.options.messages.noResults; + } + this.liveRegion.text( message ); + } +}); + +}( jQuery )); +(function( $, undefined ) { + +var lastActive, startXPos, startYPos, clickDragged, + baseClasses = "ui-button ui-widget ui-state-default ui-corner-all", + stateClasses = "ui-state-hover ui-state-active ", + typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only", + formResetHandler = function() { + var buttons = $( this ).find( ":ui-button" ); + setTimeout(function() { + buttons.button( "refresh" ); + }, 1 ); + }, + radioGroup = function( radio ) { + var name = radio.name, + form = radio.form, + radios = $( [] ); + if ( name ) { + name = name.replace( /'/g, "\\'" ); + if ( form ) { + radios = $( form ).find( "[name='" + name + "']" ); + } else { + radios = $( "[name='" + name + "']", radio.ownerDocument ) + .filter(function() { + return !this.form; + }); + } + } + return radios; + }; + +$.widget( "ui.button", { + version: "1.10.0", + defaultElement: "<button>", + options: { + disabled: null, + text: true, + label: null, + icons: { + primary: null, + secondary: null + } + }, + _create: function() { + this.element.closest( "form" ) + .unbind( "reset" + this.eventNamespace ) + .bind( "reset" + this.eventNamespace, formResetHandler ); + + if ( typeof this.options.disabled !== "boolean" ) { + this.options.disabled = !!this.element.prop( "disabled" ); + } else { + this.element.prop( "disabled", this.options.disabled ); + } + + this._determineButtonType(); + this.hasTitle = !!this.buttonElement.attr( "title" ); + + var that = this, + options = this.options, + toggleButton = this.type === "checkbox" || this.type === "radio", + activeClass = !toggleButton ? "ui-state-active" : "", + focusClass = "ui-state-focus"; + + if ( options.label === null ) { + options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html()); + } + + this._hoverable( this.buttonElement ); + + this.buttonElement + .addClass( baseClasses ) + .attr( "role", "button" ) + .bind( "mouseenter" + this.eventNamespace, function() { + if ( options.disabled ) { + return; + } + if ( this === lastActive ) { + $( this ).addClass( "ui-state-active" ); + } + }) + .bind( "mouseleave" + this.eventNamespace, function() { + if ( options.disabled ) { + return; + } + $( this ).removeClass( activeClass ); + }) + .bind( "click" + this.eventNamespace, function( event ) { + if ( options.disabled ) { + event.preventDefault(); + event.stopImmediatePropagation(); + } + }); + + this.element + .bind( "focus" + this.eventNamespace, function() { + // no need to check disabled, focus won't be triggered anyway + that.buttonElement.addClass( focusClass ); + }) + .bind( "blur" + this.eventNamespace, function() { + that.buttonElement.removeClass( focusClass ); + }); + + if ( toggleButton ) { + this.element.bind( "change" + this.eventNamespace, function() { + if ( clickDragged ) { + return; + } + that.refresh(); + }); + // if mouse moves between mousedown and mouseup (drag) set clickDragged flag + // prevents issue where button state changes but checkbox/radio checked state + // does not in Firefox (see ticket #6970) + this.buttonElement + .bind( "mousedown" + this.eventNamespace, function( event ) { + if ( options.disabled ) { + return; + } + clickDragged = false; + startXPos = event.pageX; + startYPos = event.pageY; + }) + .bind( "mouseup" + this.eventNamespace, function( event ) { + if ( options.disabled ) { + return; + } + if ( startXPos !== event.pageX || startYPos !== event.pageY ) { + clickDragged = true; + } + }); + } + + if ( this.type === "checkbox" ) { + this.buttonElement.bind( "click" + this.eventNamespace, function() { + if ( options.disabled || clickDragged ) { + return false; + } + }); + } else if ( this.type === "radio" ) { + this.buttonElement.bind( "click" + this.eventNamespace, function() { + if ( options.disabled || clickDragged ) { + return false; + } + $( this ).addClass( "ui-state-active" ); + that.buttonElement.attr( "aria-pressed", "true" ); + + var radio = that.element[ 0 ]; + radioGroup( radio ) + .not( radio ) + .map(function() { + return $( this ).button( "widget" )[ 0 ]; + }) + .removeClass( "ui-state-active" ) + .attr( "aria-pressed", "false" ); + }); + } else { + this.buttonElement + .bind( "mousedown" + this.eventNamespace, function() { + if ( options.disabled ) { + return false; + } + $( this ).addClass( "ui-state-active" ); + lastActive = this; + that.document.one( "mouseup", function() { + lastActive = null; + }); + }) + .bind( "mouseup" + this.eventNamespace, function() { + if ( options.disabled ) { + return false; + } + $( this ).removeClass( "ui-state-active" ); + }) + .bind( "keydown" + this.eventNamespace, function(event) { + if ( options.disabled ) { + return false; + } + if ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) { + $( this ).addClass( "ui-state-active" ); + } + }) + // see #8559, we bind to blur here in case the button element loses + // focus between keydown and keyup, it would be left in an "active" state + .bind( "keyup" + this.eventNamespace + " blur" + this.eventNamespace, function() { + $( this ).removeClass( "ui-state-active" ); + }); + + if ( this.buttonElement.is("a") ) { + this.buttonElement.keyup(function(event) { + if ( event.keyCode === $.ui.keyCode.SPACE ) { + // TODO pass through original event correctly (just as 2nd argument doesn't work) + $( this ).click(); + } + }); + } + } + + // TODO: pull out $.Widget's handling for the disabled option into + // $.Widget.prototype._setOptionDisabled so it's easy to proxy and can + // be overridden by individual plugins + this._setOption( "disabled", options.disabled ); + this._resetButton(); + }, + + _determineButtonType: function() { + var ancestor, labelSelector, checked; + + if ( this.element.is("[type=checkbox]") ) { + this.type = "checkbox"; + } else if ( this.element.is("[type=radio]") ) { + this.type = "radio"; + } else if ( this.element.is("input") ) { + this.type = "input"; + } else { + this.type = "button"; + } + + if ( this.type === "checkbox" || this.type === "radio" ) { + // we don't search against the document in case the element + // is disconnected from the DOM + ancestor = this.element.parents().last(); + labelSelector = "label[for='" + this.element.attr("id") + "']"; + this.buttonElement = ancestor.find( labelSelector ); + if ( !this.buttonElement.length ) { + ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings(); + this.buttonElement = ancestor.filter( labelSelector ); + if ( !this.buttonElement.length ) { + this.buttonElement = ancestor.find( labelSelector ); + } + } + this.element.addClass( "ui-helper-hidden-accessible" ); + + checked = this.element.is( ":checked" ); + if ( checked ) { + this.buttonElement.addClass( "ui-state-active" ); + } + this.buttonElement.prop( "aria-pressed", checked ); + } else { + this.buttonElement = this.element; + } + }, + + widget: function() { + return this.buttonElement; + }, + + _destroy: function() { + this.element + .removeClass( "ui-helper-hidden-accessible" ); + this.buttonElement + .removeClass( baseClasses + " " + stateClasses + " " + typeClasses ) + .removeAttr( "role" ) + .removeAttr( "aria-pressed" ) + .html( this.buttonElement.find(".ui-button-text").html() ); + + if ( !this.hasTitle ) { + this.buttonElement.removeAttr( "title" ); + } + }, + + _setOption: function( key, value ) { + this._super( key, value ); + if ( key === "disabled" ) { + if ( value ) { + this.element.prop( "disabled", true ); + } else { + this.element.prop( "disabled", false ); + } + return; + } + this._resetButton(); + }, + + refresh: function() { + //See #8237 & #8828 + var isDisabled = this.element.is( "input, button" ) ? this.element.is( ":disabled" ) : this.element.hasClass( "ui-button-disabled" ); + + if ( isDisabled !== this.options.disabled ) { + this._setOption( "disabled", isDisabled ); + } + if ( this.type === "radio" ) { + radioGroup( this.element[0] ).each(function() { + if ( $( this ).is( ":checked" ) ) { + $( this ).button( "widget" ) + .addClass( "ui-state-active" ) + .attr( "aria-pressed", "true" ); + } else { + $( this ).button( "widget" ) + .removeClass( "ui-state-active" ) + .attr( "aria-pressed", "false" ); + } + }); + } else if ( this.type === "checkbox" ) { + if ( this.element.is( ":checked" ) ) { + this.buttonElement + .addClass( "ui-state-active" ) + .attr( "aria-pressed", "true" ); + } else { + this.buttonElement + .removeClass( "ui-state-active" ) + .attr( "aria-pressed", "false" ); + } + } + }, + + _resetButton: function() { + if ( this.type === "input" ) { + if ( this.options.label ) { + this.element.val( this.options.label ); + } + return; + } + var buttonElement = this.buttonElement.removeClass( typeClasses ), + buttonText = $( "<span></span>", this.document[0] ) + .addClass( "ui-button-text" ) + .html( this.options.label ) + .appendTo( buttonElement.empty() ) + .text(), + icons = this.options.icons, + multipleIcons = icons.primary && icons.secondary, + buttonClasses = []; + + if ( icons.primary || icons.secondary ) { + if ( this.options.text ) { + buttonClasses.push( "ui-button-text-icon" + ( multipleIcons ? "s" : ( icons.primary ? "-primary" : "-secondary" ) ) ); + } + + if ( icons.primary ) { + buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" ); + } + + if ( icons.secondary ) { + buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" ); + } + + if ( !this.options.text ) { + buttonClasses.push( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" ); + + if ( !this.hasTitle ) { + buttonElement.attr( "title", $.trim( buttonText ) ); + } + } + } else { + buttonClasses.push( "ui-button-text-only" ); + } + buttonElement.addClass( buttonClasses.join( " " ) ); + } +}); + +$.widget( "ui.buttonset", { + version: "1.10.0", + options: { + items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)" + }, + + _create: function() { + this.element.addClass( "ui-buttonset" ); + }, + + _init: function() { + this.refresh(); + }, + + _setOption: function( key, value ) { + if ( key === "disabled" ) { + this.buttons.button( "option", key, value ); + } + + this._super( key, value ); + }, + + refresh: function() { + var rtl = this.element.css( "direction" ) === "rtl"; + + this.buttons = this.element.find( this.options.items ) + .filter( ":ui-button" ) + .button( "refresh" ) + .end() + .not( ":ui-button" ) + .button() + .end() + .map(function() { + return $( this ).button( "widget" )[ 0 ]; + }) + .removeClass( "ui-corner-all ui-corner-left ui-corner-right" ) + .filter( ":first" ) + .addClass( rtl ? "ui-corner-right" : "ui-corner-left" ) + .end() + .filter( ":last" ) + .addClass( rtl ? "ui-corner-left" : "ui-corner-right" ) + .end() + .end(); + }, + + _destroy: function() { + this.element.removeClass( "ui-buttonset" ); + this.buttons + .map(function() { + return $( this ).button( "widget" )[ 0 ]; + }) + .removeClass( "ui-corner-left ui-corner-right" ) + .end() + .button( "destroy" ); + } +}); + +}( jQuery ) ); +(function( $, undefined ) { + +$.extend($.ui, { datepicker: { version: "1.10.0" } }); + +var PROP_NAME = "datepicker", + dpuuid = new Date().getTime(), + instActive; + +/* Date picker manager. + Use the singleton instance of this class, $.datepicker, to interact with the date picker. + Settings for (groups of) date pickers are maintained in an instance object, + allowing multiple different settings on the same page. */ + +function Datepicker() { + this._curInst = null; // The current instance in use + this._keyEvent = false; // If the last event was a key event + this._disabledInputs = []; // List of date picker inputs that have been disabled + this._datepickerShowing = false; // True if the popup picker is showing , false if not + this._inDialog = false; // True if showing within a "dialog", false if not + this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division + this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class + this._appendClass = "ui-datepicker-append"; // The name of the append marker class + this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class + this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class + this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class + this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class + this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class + this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class + this.regional = []; // Available regional settings, indexed by language code + this.regional[""] = { // Default regional settings + closeText: "Done", // Display text for close link + prevText: "Prev", // Display text for previous month link + nextText: "Next", // Display text for next month link + currentText: "Today", // Display text for current month link + monthNames: ["January","February","March","April","May","June", + "July","August","September","October","November","December"], // Names of months for drop-down and formatting + monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], // For formatting + dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], // For formatting + dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], // For formatting + dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"], // Column headings for days starting at Sunday + weekHeader: "Wk", // Column header for week of the year + dateFormat: "mm/dd/yy", // See format options on parseDate + firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ... + isRTL: false, // True if right-to-left language, false if left-to-right + showMonthAfterYear: false, // True if the year select precedes month, false for month then year + yearSuffix: "" // Additional text to append to the year in the month headers + }; + this._defaults = { // Global defaults for all the date picker instances + showOn: "focus", // "focus" for popup on focus, + // "button" for trigger button, or "both" for either + showAnim: "fadeIn", // Name of jQuery animation for popup + showOptions: {}, // Options for enhanced animations + defaultDate: null, // Used when field is blank: actual date, + // +/-number for offset from today, null for today + appendText: "", // Display text following the input box, e.g. showing the format + buttonText: "...", // Text for trigger button + buttonImage: "", // URL for trigger button image + buttonImageOnly: false, // True if the image appears alone, false if it appears on a button + hideIfNoPrevNext: false, // True to hide next/previous month links + // if not applicable, false to just disable them + navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links + gotoCurrent: false, // True if today link goes back to current selection instead + changeMonth: false, // True if month can be selected directly, false if only prev/next + changeYear: false, // True if year can be selected directly, false if only prev/next + yearRange: "c-10:c+10", // Range of years to display in drop-down, + // either relative to today's year (-nn:+nn), relative to currently displayed year + // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n) + showOtherMonths: false, // True to show dates in other months, false to leave blank + selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable + showWeek: false, // True to show week of the year, false to not show it + calculateWeek: this.iso8601Week, // How to calculate the week of the year, + // takes a Date and returns the number of the week for it + shortYearCutoff: "+10", // Short year values < this are in the current century, + // > this are in the previous century, + // string value starting with "+" for current year + value + minDate: null, // The earliest selectable date, or null for no limit + maxDate: null, // The latest selectable date, or null for no limit + duration: "fast", // Duration of display/closure + beforeShowDay: null, // Function that takes a date and returns an array with + // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "", + // [2] = cell title (optional), e.g. $.datepicker.noWeekends + beforeShow: null, // Function that takes an input field and + // returns a set of custom settings for the date picker + onSelect: null, // Define a callback function when a date is selected + onChangeMonthYear: null, // Define a callback function when the month or year is changed + onClose: null, // Define a callback function when the datepicker is closed + numberOfMonths: 1, // Number of months to show at a time + showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0) + stepMonths: 1, // Number of months to step back/forward + stepBigMonths: 12, // Number of months to step back/forward for the big links + altField: "", // Selector for an alternate field to store selected dates into + altFormat: "", // The date format to use for the alternate field + constrainInput: true, // The input is constrained by the current date format + showButtonPanel: false, // True to show button panel, false to not show it + autoSize: false, // True to size the input for the date format, false to leave as is + disabled: false // The initial disabled state + }; + $.extend(this._defaults, this.regional[""]); + this.dpDiv = bindHover($("<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")); +} + +$.extend(Datepicker.prototype, { + /* Class name added to elements to indicate already configured with a date picker. */ + markerClassName: "hasDatepicker", + + //Keep track of the maximum number of rows displayed (see #7043) + maxRows: 4, + + // TODO rename to "widget" when switching to widget factory + _widgetDatepicker: function() { + return this.dpDiv; + }, + + /* Override the default settings for all instances of the date picker. + * @param settings object - the new settings to use as defaults (anonymous object) + * @return the manager object + */ + setDefaults: function(settings) { + extendRemove(this._defaults, settings || {}); + return this; + }, + + /* Attach the date picker to a jQuery selection. + * @param target element - the target input field or division or span + * @param settings object - the new settings to use for this date picker instance (anonymous) + */ + _attachDatepicker: function(target, settings) { + var nodeName, inline, inst; + nodeName = target.nodeName.toLowerCase(); + inline = (nodeName === "div" || nodeName === "span"); + if (!target.id) { + this.uuid += 1; + target.id = "dp" + this.uuid; + } + inst = this._newInst($(target), inline); + inst.settings = $.extend({}, settings || {}); + if (nodeName === "input") { + this._connectDatepicker(target, inst); + } else if (inline) { + this._inlineDatepicker(target, inst); + } + }, + + /* Create a new instance object. */ + _newInst: function(target, inline) { + var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"); // escape jQuery meta chars + return {id: id, input: target, // associated target + selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection + drawMonth: 0, drawYear: 0, // month being drawn + inline: inline, // is datepicker inline or not + dpDiv: (!inline ? this.dpDiv : // presentation div + bindHover($("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")))}; + }, + + /* Attach the date picker to an input field. */ + _connectDatepicker: function(target, inst) { + var input = $(target); + inst.append = $([]); + inst.trigger = $([]); + if (input.hasClass(this.markerClassName)) { + return; + } + this._attachments(input, inst); + input.addClass(this.markerClassName).keydown(this._doKeyDown). + keypress(this._doKeyPress).keyup(this._doKeyUp); + this._autoSize(inst); + $.data(target, PROP_NAME, inst); + //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665) + if( inst.settings.disabled ) { + this._disableDatepicker( target ); + } + }, + + /* Make attachments based on settings. */ + _attachments: function(input, inst) { + var showOn, buttonText, buttonImage, + appendText = this._get(inst, "appendText"), + isRTL = this._get(inst, "isRTL"); + + if (inst.append) { + inst.append.remove(); + } + if (appendText) { + inst.append = $("<span class='" + this._appendClass + "'>" + appendText + "</span>"); + input[isRTL ? "before" : "after"](inst.append); + } + + input.unbind("focus", this._showDatepicker); + + if (inst.trigger) { + inst.trigger.remove(); + } + + showOn = this._get(inst, "showOn"); + if (showOn === "focus" || showOn === "both") { // pop-up date picker when in the marked field + input.focus(this._showDatepicker); + } + if (showOn === "button" || showOn === "both") { // pop-up date picker when button clicked + buttonText = this._get(inst, "buttonText"); + buttonImage = this._get(inst, "buttonImage"); + inst.trigger = $(this._get(inst, "buttonImageOnly") ? + $("<img/>").addClass(this._triggerClass). + attr({ src: buttonImage, alt: buttonText, title: buttonText }) : + $("<button type='button'></button>").addClass(this._triggerClass). + html(!buttonImage ? buttonText : $("<img/>").attr( + { src:buttonImage, alt:buttonText, title:buttonText }))); + input[isRTL ? "before" : "after"](inst.trigger); + inst.trigger.click(function() { + if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) { + $.datepicker._hideDatepicker(); + } else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) { + $.datepicker._hideDatepicker(); + $.datepicker._showDatepicker(input[0]); + } else { + $.datepicker._showDatepicker(input[0]); + } + return false; + }); + } + }, + + /* Apply the maximum length for the date format. */ + _autoSize: function(inst) { + if (this._get(inst, "autoSize") && !inst.inline) { + var findMax, max, maxI, i, + date = new Date(2009, 12 - 1, 20), // Ensure double digits + dateFormat = this._get(inst, "dateFormat"); + + if (dateFormat.match(/[DM]/)) { + findMax = function(names) { + max = 0; + maxI = 0; + for (i = 0; i < names.length; i++) { + if (names[i].length > max) { + max = names[i].length; + maxI = i; + } + } + return maxI; + }; + date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ? + "monthNames" : "monthNamesShort")))); + date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ? + "dayNames" : "dayNamesShort"))) + 20 - date.getDay()); + } + inst.input.attr("size", this._formatDate(inst, date).length); + } + }, + + /* Attach an inline date picker to a div. */ + _inlineDatepicker: function(target, inst) { + var divSpan = $(target); + if (divSpan.hasClass(this.markerClassName)) { + return; + } + divSpan.addClass(this.markerClassName).append(inst.dpDiv); + $.data(target, PROP_NAME, inst); + this._setDate(inst, this._getDefaultDate(inst), true); + this._updateDatepicker(inst); + this._updateAlternate(inst); + //If disabled option is true, disable the datepicker before showing it (see ticket #5665) + if( inst.settings.disabled ) { + this._disableDatepicker( target ); + } + // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements + // http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height + inst.dpDiv.css( "display", "block" ); + }, + + /* Pop-up the date picker in a "dialog" box. + * @param input element - ignored + * @param date string or Date - the initial date to display + * @param onSelect function - the function to call when a date is selected + * @param settings object - update the dialog date picker instance's settings (anonymous object) + * @param pos int[2] - coordinates for the dialog's position within the screen or + * event - with x/y coordinates or + * leave empty for default (screen centre) + * @return the manager object + */ + _dialogDatepicker: function(input, date, onSelect, settings, pos) { + var id, browserWidth, browserHeight, scrollX, scrollY, + inst = this._dialogInst; // internal instance + + if (!inst) { + this.uuid += 1; + id = "dp" + this.uuid; + this._dialogInput = $("<input type='text' id='" + id + + "' style='position: absolute; top: -100px; width: 0px;'/>"); + this._dialogInput.keydown(this._doKeyDown); + $("body").append(this._dialogInput); + inst = this._dialogInst = this._newInst(this._dialogInput, false); + inst.settings = {}; + $.data(this._dialogInput[0], PROP_NAME, inst); + } + extendRemove(inst.settings, settings || {}); + date = (date && date.constructor === Date ? this._formatDate(inst, date) : date); + this._dialogInput.val(date); + + this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null); + if (!this._pos) { + browserWidth = document.documentElement.clientWidth; + browserHeight = document.documentElement.clientHeight; + scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; + scrollY = document.documentElement.scrollTop || document.body.scrollTop; + this._pos = // should use actual width/height below + [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY]; + } + + // move input on screen for focus, but hidden behind dialog + this._dialogInput.css("left", (this._pos[0] + 20) + "px").css("top", this._pos[1] + "px"); + inst.settings.onSelect = onSelect; + this._inDialog = true; + this.dpDiv.addClass(this._dialogClass); + this._showDatepicker(this._dialogInput[0]); + if ($.blockUI) { + $.blockUI(this.dpDiv); + } + $.data(this._dialogInput[0], PROP_NAME, inst); + return this; + }, + + /* Detach a datepicker from its control. + * @param target element - the target input field or division or span + */ + _destroyDatepicker: function(target) { + var nodeName, + $target = $(target), + inst = $.data(target, PROP_NAME); + + if (!$target.hasClass(this.markerClassName)) { + return; + } + + nodeName = target.nodeName.toLowerCase(); + $.removeData(target, PROP_NAME); + if (nodeName === "input") { + inst.append.remove(); + inst.trigger.remove(); + $target.removeClass(this.markerClassName). + unbind("focus", this._showDatepicker). + unbind("keydown", this._doKeyDown). + unbind("keypress", this._doKeyPress). + unbind("keyup", this._doKeyUp); + } else if (nodeName === "div" || nodeName === "span") { + $target.removeClass(this.markerClassName).empty(); + } + }, + + /* Enable the date picker to a jQuery selection. + * @param target element - the target input field or division or span + */ + _enableDatepicker: function(target) { + var nodeName, inline, + $target = $(target), + inst = $.data(target, PROP_NAME); + + if (!$target.hasClass(this.markerClassName)) { + return; + } + + nodeName = target.nodeName.toLowerCase(); + if (nodeName === "input") { + target.disabled = false; + inst.trigger.filter("button"). + each(function() { this.disabled = false; }).end(). + filter("img").css({opacity: "1.0", cursor: ""}); + } else if (nodeName === "div" || nodeName === "span") { + inline = $target.children("." + this._inlineClass); + inline.children().removeClass("ui-state-disabled"); + inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). + prop("disabled", false); + } + this._disabledInputs = $.map(this._disabledInputs, + function(value) { return (value === target ? null : value); }); // delete entry + }, + + /* Disable the date picker to a jQuery selection. + * @param target element - the target input field or division or span + */ + _disableDatepicker: function(target) { + var nodeName, inline, + $target = $(target), + inst = $.data(target, PROP_NAME); + + if (!$target.hasClass(this.markerClassName)) { + return; + } + + nodeName = target.nodeName.toLowerCase(); + if (nodeName === "input") { + target.disabled = true; + inst.trigger.filter("button"). + each(function() { this.disabled = true; }).end(). + filter("img").css({opacity: "0.5", cursor: "default"}); + } else if (nodeName === "div" || nodeName === "span") { + inline = $target.children("." + this._inlineClass); + inline.children().addClass("ui-state-disabled"); + inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). + prop("disabled", true); + } + this._disabledInputs = $.map(this._disabledInputs, + function(value) { return (value === target ? null : value); }); // delete entry + this._disabledInputs[this._disabledInputs.length] = target; + }, + + /* Is the first field in a jQuery collection disabled as a datepicker? + * @param target element - the target input field or division or span + * @return boolean - true if disabled, false if enabled + */ + _isDisabledDatepicker: function(target) { + if (!target) { + return false; + } + for (var i = 0; i < this._disabledInputs.length; i++) { + if (this._disabledInputs[i] === target) { + return true; + } + } + return false; + }, + + /* Retrieve the instance data for the target control. + * @param target element - the target input field or division or span + * @return object - the associated instance data + * @throws error if a jQuery problem getting data + */ + _getInst: function(target) { + try { + return $.data(target, PROP_NAME); + } + catch (err) { + throw "Missing instance data for this datepicker"; + } + }, + + /* Update or retrieve the settings for a date picker attached to an input field or division. + * @param target element - the target input field or division or span + * @param name object - the new settings to update or + * string - the name of the setting to change or retrieve, + * when retrieving also "all" for all instance settings or + * "defaults" for all global defaults + * @param value any - the new value for the setting + * (omit if above is an object or to retrieve a value) + */ + _optionDatepicker: function(target, name, value) { + var settings, date, minDate, maxDate, + inst = this._getInst(target); + + if (arguments.length === 2 && typeof name === "string") { + return (name === "defaults" ? $.extend({}, $.datepicker._defaults) : + (inst ? (name === "all" ? $.extend({}, inst.settings) : + this._get(inst, name)) : null)); + } + + settings = name || {}; + if (typeof name === "string") { + settings = {}; + settings[name] = value; + } + + if (inst) { + if (this._curInst === inst) { + this._hideDatepicker(); + } + + date = this._getDateDatepicker(target, true); + minDate = this._getMinMaxDate(inst, "min"); + maxDate = this._getMinMaxDate(inst, "max"); + extendRemove(inst.settings, settings); + // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided + if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) { + inst.settings.minDate = this._formatDate(inst, minDate); + } + if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) { + inst.settings.maxDate = this._formatDate(inst, maxDate); + } + if ( "disabled" in settings ) { + if ( settings.disabled ) { + this._disableDatepicker(target); + } else { + this._enableDatepicker(target); + } + } + this._attachments($(target), inst); + this._autoSize(inst); + this._setDate(inst, date); + this._updateAlternate(inst); + this._updateDatepicker(inst); + } + }, + + // change method deprecated + _changeDatepicker: function(target, name, value) { + this._optionDatepicker(target, name, value); + }, + + /* Redraw the date picker attached to an input field or division. + * @param target element - the target input field or division or span + */ + _refreshDatepicker: function(target) { + var inst = this._getInst(target); + if (inst) { + this._updateDatepicker(inst); + } + }, + + /* Set the dates for a jQuery selection. + * @param target element - the target input field or division or span + * @param date Date - the new date + */ + _setDateDatepicker: function(target, date) { + var inst = this._getInst(target); + if (inst) { + this._setDate(inst, date); + this._updateDatepicker(inst); + this._updateAlternate(inst); + } + }, + + /* Get the date(s) for the first entry in a jQuery selection. + * @param target element - the target input field or division or span + * @param noDefault boolean - true if no default date is to be used + * @return Date - the current date + */ + _getDateDatepicker: function(target, noDefault) { + var inst = this._getInst(target); + if (inst && !inst.inline) { + this._setDateFromField(inst, noDefault); + } + return (inst ? this._getDate(inst) : null); + }, + + /* Handle keystrokes. */ + _doKeyDown: function(event) { + var onSelect, dateStr, sel, + inst = $.datepicker._getInst(event.target), + handled = true, + isRTL = inst.dpDiv.is(".ui-datepicker-rtl"); + + inst._keyEvent = true; + if ($.datepicker._datepickerShowing) { + switch (event.keyCode) { + case 9: $.datepicker._hideDatepicker(); + handled = false; + break; // hide on tab out + case 13: sel = $("td." + $.datepicker._dayOverClass + ":not(." + + $.datepicker._currentClass + ")", inst.dpDiv); + if (sel[0]) { + $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]); + } + + onSelect = $.datepicker._get(inst, "onSelect"); + if (onSelect) { + dateStr = $.datepicker._formatDate(inst); + + // trigger custom callback + onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); + } else { + $.datepicker._hideDatepicker(); + } + + return false; // don't submit the form + case 27: $.datepicker._hideDatepicker(); + break; // hide on escape + case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ? + -$.datepicker._get(inst, "stepBigMonths") : + -$.datepicker._get(inst, "stepMonths")), "M"); + break; // previous month/year on page up/+ ctrl + case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ? + +$.datepicker._get(inst, "stepBigMonths") : + +$.datepicker._get(inst, "stepMonths")), "M"); + break; // next month/year on page down/+ ctrl + case 35: if (event.ctrlKey || event.metaKey) { + $.datepicker._clearDate(event.target); + } + handled = event.ctrlKey || event.metaKey; + break; // clear on ctrl or command +end + case 36: if (event.ctrlKey || event.metaKey) { + $.datepicker._gotoToday(event.target); + } + handled = event.ctrlKey || event.metaKey; + break; // current on ctrl or command +home + case 37: if (event.ctrlKey || event.metaKey) { + $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), "D"); + } + handled = event.ctrlKey || event.metaKey; + // -1 day on ctrl or command +left + if (event.originalEvent.altKey) { + $.datepicker._adjustDate(event.target, (event.ctrlKey ? + -$.datepicker._get(inst, "stepBigMonths") : + -$.datepicker._get(inst, "stepMonths")), "M"); + } + // next month/year on alt +left on Mac + break; + case 38: if (event.ctrlKey || event.metaKey) { + $.datepicker._adjustDate(event.target, -7, "D"); + } + handled = event.ctrlKey || event.metaKey; + break; // -1 week on ctrl or command +up + case 39: if (event.ctrlKey || event.metaKey) { + $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), "D"); + } + handled = event.ctrlKey || event.metaKey; + // +1 day on ctrl or command +right + if (event.originalEvent.altKey) { + $.datepicker._adjustDate(event.target, (event.ctrlKey ? + +$.datepicker._get(inst, "stepBigMonths") : + +$.datepicker._get(inst, "stepMonths")), "M"); + } + // next month/year on alt +right + break; + case 40: if (event.ctrlKey || event.metaKey) { + $.datepicker._adjustDate(event.target, +7, "D"); + } + handled = event.ctrlKey || event.metaKey; + break; // +1 week on ctrl or command +down + default: handled = false; + } + } else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home + $.datepicker._showDatepicker(this); + } else { + handled = false; + } + + if (handled) { + event.preventDefault(); + event.stopPropagation(); + } + }, + + /* Filter entered characters - based on date format. */ + _doKeyPress: function(event) { + var chars, chr, + inst = $.datepicker._getInst(event.target); + + if ($.datepicker._get(inst, "constrainInput")) { + chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat")); + chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode); + return event.ctrlKey || event.metaKey || (chr < " " || !chars || chars.indexOf(chr) > -1); + } + }, + + /* Synchronise manual entry and field/alternate field. */ + _doKeyUp: function(event) { + var date, + inst = $.datepicker._getInst(event.target); + + if (inst.input.val() !== inst.lastVal) { + try { + date = $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), + (inst.input ? inst.input.val() : null), + $.datepicker._getFormatConfig(inst)); + + if (date) { // only if valid + $.datepicker._setDateFromField(inst); + $.datepicker._updateAlternate(inst); + $.datepicker._updateDatepicker(inst); + } + } + catch (err) { + } + } + return true; + }, + + /* Pop-up the date picker for a given input field. + * If false returned from beforeShow event handler do not show. + * @param input element - the input field attached to the date picker or + * event - if triggered by focus + */ + _showDatepicker: function(input) { + input = input.target || input; + if (input.nodeName.toLowerCase() !== "input") { // find from button/image trigger + input = $("input", input.parentNode)[0]; + } + + if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here + return; + } + + var inst, beforeShow, beforeShowSettings, isFixed, + offset, showAnim, duration; + + inst = $.datepicker._getInst(input); + if ($.datepicker._curInst && $.datepicker._curInst !== inst) { + $.datepicker._curInst.dpDiv.stop(true, true); + if ( inst && $.datepicker._datepickerShowing ) { + $.datepicker._hideDatepicker( $.datepicker._curInst.input[0] ); + } + } + + beforeShow = $.datepicker._get(inst, "beforeShow"); + beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {}; + if(beforeShowSettings === false){ + return; + } + extendRemove(inst.settings, beforeShowSettings); + + inst.lastVal = null; + $.datepicker._lastInput = input; + $.datepicker._setDateFromField(inst); + + if ($.datepicker._inDialog) { // hide cursor + input.value = ""; + } + if (!$.datepicker._pos) { // position below input + $.datepicker._pos = $.datepicker._findPos(input); + $.datepicker._pos[1] += input.offsetHeight; // add the height + } + + isFixed = false; + $(input).parents().each(function() { + isFixed |= $(this).css("position") === "fixed"; + return !isFixed; + }); + + offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]}; + $.datepicker._pos = null; + //to avoid flashes on Firefox + inst.dpDiv.empty(); + // determine sizing offscreen + inst.dpDiv.css({position: "absolute", display: "block", top: "-1000px"}); + $.datepicker._updateDatepicker(inst); + // fix width for dynamic number of date pickers + // and adjust position before showing + offset = $.datepicker._checkOffset(inst, offset, isFixed); + inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ? + "static" : (isFixed ? "fixed" : "absolute")), display: "none", + left: offset.left + "px", top: offset.top + "px"}); + + if (!inst.inline) { + showAnim = $.datepicker._get(inst, "showAnim"); + duration = $.datepicker._get(inst, "duration"); + inst.dpDiv.zIndex($(input).zIndex()+1); + $.datepicker._datepickerShowing = true; + + if ( $.effects && $.effects.effect[ showAnim ] ) { + inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration); + } else { + inst.dpDiv[showAnim || "show"](showAnim ? duration : null); + } + + if (inst.input.is(":visible") && !inst.input.is(":disabled")) { + inst.input.focus(); + } + $.datepicker._curInst = inst; + } + }, + + /* Generate the date picker content. */ + _updateDatepicker: function(inst) { + this.maxRows = 4; //Reset the max number of rows being displayed (see #7043) + instActive = inst; // for delegate hover events + inst.dpDiv.empty().append(this._generateHTML(inst)); + this._attachHandlers(inst); + inst.dpDiv.find("." + this._dayOverClass + " a").mouseover(); + + var origyearshtml, + numMonths = this._getNumberOfMonths(inst), + cols = numMonths[1], + width = 17; + + inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""); + if (cols > 1) { + inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", (width * cols) + "em"); + } + inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") + + "Class"]("ui-datepicker-multi"); + inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") + + "Class"]("ui-datepicker-rtl"); + + // #6694 - don't focus the input if it's already focused + // this breaks the change event in IE + if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input && + inst.input.is(":visible") && !inst.input.is(":disabled") && inst.input[0] !== document.activeElement) { + inst.input.focus(); + } + + // deffered render of the years select (to avoid flashes on Firefox) + if( inst.yearshtml ){ + origyearshtml = inst.yearshtml; + setTimeout(function(){ + //assure that inst.yearshtml didn't change. + if( origyearshtml === inst.yearshtml && inst.yearshtml ){ + inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml); + } + origyearshtml = inst.yearshtml = null; + }, 0); + } + }, + + /* Retrieve the size of left and top borders for an element. + * @param elem (jQuery object) the element of interest + * @return (number[2]) the left and top borders + */ + _getBorders: function(elem) { + var convert = function(value) { + return {thin: 1, medium: 2, thick: 3}[value] || value; + }; + return [parseFloat(convert(elem.css("border-left-width"))), + parseFloat(convert(elem.css("border-top-width")))]; + }, + + /* Check positioning to remain on screen. */ + _checkOffset: function(inst, offset, isFixed) { + var dpWidth = inst.dpDiv.outerWidth(), + dpHeight = inst.dpDiv.outerHeight(), + inputWidth = inst.input ? inst.input.outerWidth() : 0, + inputHeight = inst.input ? inst.input.outerHeight() : 0, + viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()), + viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop()); + + offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0); + offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0; + offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0; + + // now check if datepicker is showing outside window viewport - move to a better place if so. + offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? + Math.abs(offset.left + dpWidth - viewWidth) : 0); + offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? + Math.abs(dpHeight + inputHeight) : 0); + + return offset; + }, + + /* Find an object's position on the screen. */ + _findPos: function(obj) { + var position, + inst = this._getInst(obj), + isRTL = this._get(inst, "isRTL"); + + while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) { + obj = obj[isRTL ? "previousSibling" : "nextSibling"]; + } + + position = $(obj).offset(); + return [position.left, position.top]; + }, + + /* Hide the date picker from view. + * @param input element - the input field attached to the date picker + */ + _hideDatepicker: function(input) { + var showAnim, duration, postProcess, onClose, + inst = this._curInst; + + if (!inst || (input && inst !== $.data(input, PROP_NAME))) { + return; + } + + if (this._datepickerShowing) { + showAnim = this._get(inst, "showAnim"); + duration = this._get(inst, "duration"); + postProcess = function() { + $.datepicker._tidyDialog(inst); + }; + + // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed + if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) { + inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess); + } else { + inst.dpDiv[(showAnim === "slideDown" ? "slideUp" : + (showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess); + } + + if (!showAnim) { + postProcess(); + } + this._datepickerShowing = false; + + onClose = this._get(inst, "onClose"); + if (onClose) { + onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]); + } + + this._lastInput = null; + if (this._inDialog) { + this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" }); + if ($.blockUI) { + $.unblockUI(); + $("body").append(this.dpDiv); + } + } + this._inDialog = false; + } + }, + + /* Tidy up after a dialog display. */ + _tidyDialog: function(inst) { + inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar"); + }, + + /* Close date picker if clicked elsewhere. */ + _checkExternalClick: function(event) { + if (!$.datepicker._curInst) { + return; + } + + var $target = $(event.target), + inst = $.datepicker._getInst($target[0]); + + if ( ( ( $target[0].id !== $.datepicker._mainDivId && + $target.parents("#" + $.datepicker._mainDivId).length === 0 && + !$target.hasClass($.datepicker.markerClassName) && + !$target.closest("." + $.datepicker._triggerClass).length && + $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) || + ( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) { + $.datepicker._hideDatepicker(); + } + }, + + /* Adjust one of the date sub-fields. */ + _adjustDate: function(id, offset, period) { + var target = $(id), + inst = this._getInst(target[0]); + + if (this._isDisabledDatepicker(target[0])) { + return; + } + this._adjustInstDate(inst, offset + + (period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning + period); + this._updateDatepicker(inst); + }, + + /* Action for current link. */ + _gotoToday: function(id) { + var date, + target = $(id), + inst = this._getInst(target[0]); + + if (this._get(inst, "gotoCurrent") && inst.currentDay) { + inst.selectedDay = inst.currentDay; + inst.drawMonth = inst.selectedMonth = inst.currentMonth; + inst.drawYear = inst.selectedYear = inst.currentYear; + } else { + date = new Date(); + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + } + this._notifyChange(inst); + this._adjustDate(target); + }, + + /* Action for selecting a new month/year. */ + _selectMonthYear: function(id, select, period) { + var target = $(id), + inst = this._getInst(target[0]); + + inst["selected" + (period === "M" ? "Month" : "Year")] = + inst["draw" + (period === "M" ? "Month" : "Year")] = + parseInt(select.options[select.selectedIndex].value,10); + + this._notifyChange(inst); + this._adjustDate(target); + }, + + /* Action for selecting a day. */ + _selectDay: function(id, month, year, td) { + var inst, + target = $(id); + + if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) { + return; + } + + inst = this._getInst(target[0]); + inst.selectedDay = inst.currentDay = $("a", td).html(); + inst.selectedMonth = inst.currentMonth = month; + inst.selectedYear = inst.currentYear = year; + this._selectDate(id, this._formatDate(inst, + inst.currentDay, inst.currentMonth, inst.currentYear)); + }, + + /* Erase the input field and hide the date picker. */ + _clearDate: function(id) { + var target = $(id); + this._selectDate(target, ""); + }, + + /* Update the input field with the selected date. */ + _selectDate: function(id, dateStr) { + var onSelect, + target = $(id), + inst = this._getInst(target[0]); + + dateStr = (dateStr != null ? dateStr : this._formatDate(inst)); + if (inst.input) { + inst.input.val(dateStr); + } + this._updateAlternate(inst); + + onSelect = this._get(inst, "onSelect"); + if (onSelect) { + onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback + } else if (inst.input) { + inst.input.trigger("change"); // fire the change event + } + + if (inst.inline){ + this._updateDatepicker(inst); + } else { + this._hideDatepicker(); + this._lastInput = inst.input[0]; + if (typeof(inst.input[0]) !== "object") { + inst.input.focus(); // restore focus + } + this._lastInput = null; + } + }, + + /* Update any alternate field to synchronise with the main field. */ + _updateAlternate: function(inst) { + var altFormat, date, dateStr, + altField = this._get(inst, "altField"); + + if (altField) { // update alternate field too + altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat"); + date = this._getDate(inst); + dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)); + $(altField).each(function() { $(this).val(dateStr); }); + } + }, + + /* Set as beforeShowDay function to prevent selection of weekends. + * @param date Date - the date to customise + * @return [boolean, string] - is this date selectable?, what is its CSS class? + */ + noWeekends: function(date) { + var day = date.getDay(); + return [(day > 0 && day < 6), ""]; + }, + + /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition. + * @param date Date - the date to get the week for + * @return number - the number of the week within the year that contains this date + */ + iso8601Week: function(date) { + var time, + checkDate = new Date(date.getTime()); + + // Find Thursday of this week starting on Monday + checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); + + time = checkDate.getTime(); + checkDate.setMonth(0); // Compare with Jan 1 + checkDate.setDate(1); + return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1; + }, + + /* Parse a string value into a date object. + * See formatDate below for the possible formats. + * + * @param format string - the expected format of the date + * @param value string - the date in the above format + * @param settings Object - attributes include: + * shortYearCutoff number - the cutoff year for determining the century (optional) + * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) + * dayNames string[7] - names of the days from Sunday (optional) + * monthNamesShort string[12] - abbreviated names of the months (optional) + * monthNames string[12] - names of the months (optional) + * @return Date - the extracted date value or null if value is blank + */ + parseDate: function (format, value, settings) { + if (format == null || value == null) { + throw "Invalid arguments"; + } + + value = (typeof value === "object" ? value.toString() : value + ""); + if (value === "") { + return null; + } + + var iFormat, dim, extra, + iValue = 0, + shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff, + shortYearCutoff = (typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp : + new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)), + dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, + dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, + monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, + monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, + year = -1, + month = -1, + day = -1, + doy = -1, + literal = false, + date, + // Check whether a format character is doubled + lookAhead = function(match) { + var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); + if (matches) { + iFormat++; + } + return matches; + }, + // Extract a number from the string value + getNumber = function(match) { + var isDoubled = lookAhead(match), + size = (match === "@" ? 14 : (match === "!" ? 20 : + (match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))), + digits = new RegExp("^\\d{1," + size + "}"), + num = value.substring(iValue).match(digits); + if (!num) { + throw "Missing number at position " + iValue; + } + iValue += num[0].length; + return parseInt(num[0], 10); + }, + // Extract a name from the string value and convert to an index + getName = function(match, shortNames, longNames) { + var index = -1, + names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) { + return [ [k, v] ]; + }).sort(function (a, b) { + return -(a[1].length - b[1].length); + }); + + $.each(names, function (i, pair) { + var name = pair[1]; + if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) { + index = pair[0]; + iValue += name.length; + return false; + } + }); + if (index !== -1) { + return index + 1; + } else { + throw "Unknown name at position " + iValue; + } + }, + // Confirm that a literal character matches the string value + checkLiteral = function() { + if (value.charAt(iValue) !== format.charAt(iFormat)) { + throw "Unexpected literal at position " + iValue; + } + iValue++; + }; + + for (iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) { + if (format.charAt(iFormat) === "'" && !lookAhead("'")) { + literal = false; + } else { + checkLiteral(); + } + } else { + switch (format.charAt(iFormat)) { + case "d": + day = getNumber("d"); + break; + case "D": + getName("D", dayNamesShort, dayNames); + break; + case "o": + doy = getNumber("o"); + break; + case "m": + month = getNumber("m"); + break; + case "M": + month = getName("M", monthNamesShort, monthNames); + break; + case "y": + year = getNumber("y"); + break; + case "@": + date = new Date(getNumber("@")); + year = date.getFullYear(); + month = date.getMonth() + 1; + day = date.getDate(); + break; + case "!": + date = new Date((getNumber("!") - this._ticksTo1970) / 10000); + year = date.getFullYear(); + month = date.getMonth() + 1; + day = date.getDate(); + break; + case "'": + if (lookAhead("'")){ + checkLiteral(); + } else { + literal = true; + } + break; + default: + checkLiteral(); + } + } + } + + if (iValue < value.length){ + extra = value.substr(iValue); + if (!/^\s+/.test(extra)) { + throw "Extra/unparsed characters found in date: " + extra; + } + } + + if (year === -1) { + year = new Date().getFullYear(); + } else if (year < 100) { + year += new Date().getFullYear() - new Date().getFullYear() % 100 + + (year <= shortYearCutoff ? 0 : -100); + } + + if (doy > -1) { + month = 1; + day = doy; + do { + dim = this._getDaysInMonth(year, month - 1); + if (day <= dim) { + break; + } + month++; + day -= dim; + } while (true); + } + + date = this._daylightSavingAdjust(new Date(year, month - 1, day)); + if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) { + throw "Invalid date"; // E.g. 31/02/00 + } + return date; + }, + + /* Standard date formats. */ + ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601) + COOKIE: "D, dd M yy", + ISO_8601: "yy-mm-dd", + RFC_822: "D, d M y", + RFC_850: "DD, dd-M-y", + RFC_1036: "D, d M y", + RFC_1123: "D, d M yy", + RFC_2822: "D, d M yy", + RSS: "D, d M y", // RFC 822 + TICKS: "!", + TIMESTAMP: "@", + W3C: "yy-mm-dd", // ISO 8601 + + _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000), + + /* Format a date object into a string value. + * The format can be combinations of the following: + * d - day of month (no leading zero) + * dd - day of month (two digit) + * o - day of year (no leading zeros) + * oo - day of year (three digit) + * D - day name short + * DD - day name long + * m - month of year (no leading zero) + * mm - month of year (two digit) + * M - month name short + * MM - month name long + * y - year (two digit) + * yy - year (four digit) + * @ - Unix timestamp (ms since 01/01/1970) + * ! - Windows ticks (100ns since 01/01/0001) + * "..." - literal text + * '' - single quote + * + * @param format string - the desired format of the date + * @param date Date - the date value to format + * @param settings Object - attributes include: + * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) + * dayNames string[7] - names of the days from Sunday (optional) + * monthNamesShort string[12] - abbreviated names of the months (optional) + * monthNames string[12] - names of the months (optional) + * @return string - the date in the above format + */ + formatDate: function (format, date, settings) { + if (!date) { + return ""; + } + + var iFormat, + dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, + dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, + monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, + monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, + // Check whether a format character is doubled + lookAhead = function(match) { + var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); + if (matches) { + iFormat++; + } + return matches; + }, + // Format a number, with leading zero if necessary + formatNumber = function(match, value, len) { + var num = "" + value; + if (lookAhead(match)) { + while (num.length < len) { + num = "0" + num; + } + } + return num; + }, + // Format a name, short or long as requested + formatName = function(match, value, shortNames, longNames) { + return (lookAhead(match) ? longNames[value] : shortNames[value]); + }, + output = "", + literal = false; + + if (date) { + for (iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) { + if (format.charAt(iFormat) === "'" && !lookAhead("'")) { + literal = false; + } else { + output += format.charAt(iFormat); + } + } else { + switch (format.charAt(iFormat)) { + case "d": + output += formatNumber("d", date.getDate(), 2); + break; + case "D": + output += formatName("D", date.getDay(), dayNamesShort, dayNames); + break; + case "o": + output += formatNumber("o", + Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3); + break; + case "m": + output += formatNumber("m", date.getMonth() + 1, 2); + break; + case "M": + output += formatName("M", date.getMonth(), monthNamesShort, monthNames); + break; + case "y": + output += (lookAhead("y") ? date.getFullYear() : + (date.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100); + break; + case "@": + output += date.getTime(); + break; + case "!": + output += date.getTime() * 10000 + this._ticksTo1970; + break; + case "'": + if (lookAhead("'")) { + output += "'"; + } else { + literal = true; + } + break; + default: + output += format.charAt(iFormat); + } + } + } + } + return output; + }, + + /* Extract all possible characters from the date format. */ + _possibleChars: function (format) { + var iFormat, + chars = "", + literal = false, + // Check whether a format character is doubled + lookAhead = function(match) { + var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); + if (matches) { + iFormat++; + } + return matches; + }; + + for (iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) { + if (format.charAt(iFormat) === "'" && !lookAhead("'")) { + literal = false; + } else { + chars += format.charAt(iFormat); + } + } else { + switch (format.charAt(iFormat)) { + case "d": case "m": case "y": case "@": + chars += "0123456789"; + break; + case "D": case "M": + return null; // Accept anything + case "'": + if (lookAhead("'")) { + chars += "'"; + } else { + literal = true; + } + break; + default: + chars += format.charAt(iFormat); + } + } + } + return chars; + }, + + /* Get a setting value, defaulting if necessary. */ + _get: function(inst, name) { + return inst.settings[name] !== undefined ? + inst.settings[name] : this._defaults[name]; + }, + + /* Parse existing date and initialise date picker. */ + _setDateFromField: function(inst, noDefault) { + if (inst.input.val() === inst.lastVal) { + return; + } + + var dateFormat = this._get(inst, "dateFormat"), + dates = inst.lastVal = inst.input ? inst.input.val() : null, + defaultDate = this._getDefaultDate(inst), + date = defaultDate, + settings = this._getFormatConfig(inst); + + try { + date = this.parseDate(dateFormat, dates, settings) || defaultDate; + } catch (event) { + dates = (noDefault ? "" : dates); + } + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + inst.currentDay = (dates ? date.getDate() : 0); + inst.currentMonth = (dates ? date.getMonth() : 0); + inst.currentYear = (dates ? date.getFullYear() : 0); + this._adjustInstDate(inst); + }, + + /* Retrieve the default date shown on opening. */ + _getDefaultDate: function(inst) { + return this._restrictMinMax(inst, + this._determineDate(inst, this._get(inst, "defaultDate"), new Date())); + }, + + /* A date may be specified as an exact value or a relative one. */ + _determineDate: function(inst, date, defaultDate) { + var offsetNumeric = function(offset) { + var date = new Date(); + date.setDate(date.getDate() + offset); + return date; + }, + offsetString = function(offset) { + try { + return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), + offset, $.datepicker._getFormatConfig(inst)); + } + catch (e) { + // Ignore + } + + var date = (offset.toLowerCase().match(/^c/) ? + $.datepicker._getDate(inst) : null) || new Date(), + year = date.getFullYear(), + month = date.getMonth(), + day = date.getDate(), + pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g, + matches = pattern.exec(offset); + + while (matches) { + switch (matches[2] || "d") { + case "d" : case "D" : + day += parseInt(matches[1],10); break; + case "w" : case "W" : + day += parseInt(matches[1],10) * 7; break; + case "m" : case "M" : + month += parseInt(matches[1],10); + day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); + break; + case "y": case "Y" : + year += parseInt(matches[1],10); + day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); + break; + } + matches = pattern.exec(offset); + } + return new Date(year, month, day); + }, + newDate = (date == null || date === "" ? defaultDate : (typeof date === "string" ? offsetString(date) : + (typeof date === "number" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime())))); + + newDate = (newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate); + if (newDate) { + newDate.setHours(0); + newDate.setMinutes(0); + newDate.setSeconds(0); + newDate.setMilliseconds(0); + } + return this._daylightSavingAdjust(newDate); + }, + + /* Handle switch to/from daylight saving. + * Hours may be non-zero on daylight saving cut-over: + * > 12 when midnight changeover, but then cannot generate + * midnight datetime, so jump to 1AM, otherwise reset. + * @param date (Date) the date to check + * @return (Date) the corrected date + */ + _daylightSavingAdjust: function(date) { + if (!date) { + return null; + } + date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); + return date; + }, + + /* Set the date(s) directly. */ + _setDate: function(inst, date, noChange) { + var clear = !date, + origMonth = inst.selectedMonth, + origYear = inst.selectedYear, + newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date())); + + inst.selectedDay = inst.currentDay = newDate.getDate(); + inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth(); + inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear(); + if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) { + this._notifyChange(inst); + } + this._adjustInstDate(inst); + if (inst.input) { + inst.input.val(clear ? "" : this._formatDate(inst)); + } + }, + + /* Retrieve the date(s) directly. */ + _getDate: function(inst) { + var startDate = (!inst.currentYear || (inst.input && inst.input.val() === "") ? null : + this._daylightSavingAdjust(new Date( + inst.currentYear, inst.currentMonth, inst.currentDay))); + return startDate; + }, + + /* Attach the onxxx handlers. These are declared statically so + * they work with static code transformers like Caja. + */ + _attachHandlers: function(inst) { + var stepMonths = this._get(inst, "stepMonths"), + id = "#" + inst.id.replace( /\\\\/g, "\\" ); + inst.dpDiv.find("[data-handler]").map(function () { + var handler = { + prev: function () { + window["DP_jQuery_" + dpuuid].datepicker._adjustDate(id, -stepMonths, "M"); + }, + next: function () { + window["DP_jQuery_" + dpuuid].datepicker._adjustDate(id, +stepMonths, "M"); + }, + hide: function () { + window["DP_jQuery_" + dpuuid].datepicker._hideDatepicker(); + }, + today: function () { + window["DP_jQuery_" + dpuuid].datepicker._gotoToday(id); + }, + selectDay: function () { + window["DP_jQuery_" + dpuuid].datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this); + return false; + }, + selectMonth: function () { + window["DP_jQuery_" + dpuuid].datepicker._selectMonthYear(id, this, "M"); + return false; + }, + selectYear: function () { + window["DP_jQuery_" + dpuuid].datepicker._selectMonthYear(id, this, "Y"); + return false; + } + }; + $(this).bind(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]); + }); + }, + + /* Generate the HTML for the current state of the date picker. */ + _generateHTML: function(inst) { + var maxDraw, prevText, prev, nextText, next, currentText, gotoDate, + controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin, + monthNames, monthNamesShort, beforeShowDay, showOtherMonths, + selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate, + cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows, + printDate, dRow, tbody, daySettings, otherMonth, unselectable, + tempDate = new Date(), + today = this._daylightSavingAdjust( + new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time + isRTL = this._get(inst, "isRTL"), + showButtonPanel = this._get(inst, "showButtonPanel"), + hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"), + navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"), + numMonths = this._getNumberOfMonths(inst), + showCurrentAtPos = this._get(inst, "showCurrentAtPos"), + stepMonths = this._get(inst, "stepMonths"), + isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1), + currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) : + new Date(inst.currentYear, inst.currentMonth, inst.currentDay))), + minDate = this._getMinMaxDate(inst, "min"), + maxDate = this._getMinMaxDate(inst, "max"), + drawMonth = inst.drawMonth - showCurrentAtPos, + drawYear = inst.drawYear; + + if (drawMonth < 0) { + drawMonth += 12; + drawYear--; + } + if (maxDate) { + maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), + maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate())); + maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw); + while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) { + drawMonth--; + if (drawMonth < 0) { + drawMonth = 11; + drawYear--; + } + } + } + inst.drawMonth = drawMonth; + inst.drawYear = drawYear; + + prevText = this._get(inst, "prevText"); + prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText, + this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)), + this._getFormatConfig(inst))); + + prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? + "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" + + " title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>" : + (hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+ prevText +"'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>")); + + nextText = this._get(inst, "nextText"); + nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText, + this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)), + this._getFormatConfig(inst))); + + next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? + "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" + + " title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>" : + (hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+ nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>")); + + currentText = this._get(inst, "currentText"); + gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today); + currentText = (!navigationAsDateFormat ? currentText : + this.formatDate(currentText, gotoDate, this._getFormatConfig(inst))); + + controls = (!inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" + + this._get(inst, "closeText") + "</button>" : ""); + + buttonPanel = (showButtonPanel) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + (isRTL ? controls : "") + + (this._isInRange(inst, gotoDate) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" + + ">" + currentText + "</button>" : "") + (isRTL ? "" : controls) + "</div>" : ""; + + firstDay = parseInt(this._get(inst, "firstDay"),10); + firstDay = (isNaN(firstDay) ? 0 : firstDay); + + showWeek = this._get(inst, "showWeek"); + dayNames = this._get(inst, "dayNames"); + dayNamesMin = this._get(inst, "dayNamesMin"); + monthNames = this._get(inst, "monthNames"); + monthNamesShort = this._get(inst, "monthNamesShort"); + beforeShowDay = this._get(inst, "beforeShowDay"); + showOtherMonths = this._get(inst, "showOtherMonths"); + selectOtherMonths = this._get(inst, "selectOtherMonths"); + defaultDate = this._getDefaultDate(inst); + html = ""; + dow; + for (row = 0; row < numMonths[0]; row++) { + group = ""; + this.maxRows = 4; + for (col = 0; col < numMonths[1]; col++) { + selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); + cornerClass = " ui-corner-all"; + calender = ""; + if (isMultiMonth) { + calender += "<div class='ui-datepicker-group"; + if (numMonths[1] > 1) { + switch (col) { + case 0: calender += " ui-datepicker-group-first"; + cornerClass = " ui-corner-" + (isRTL ? "right" : "left"); break; + case numMonths[1]-1: calender += " ui-datepicker-group-last"; + cornerClass = " ui-corner-" + (isRTL ? "left" : "right"); break; + default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break; + } + } + calender += "'>"; + } + calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" + + (/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") + + (/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") + + this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, + row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers + "</div><table class='ui-datepicker-calendar'><thead>" + + "<tr>"; + thead = (showWeek ? "<th class='ui-datepicker-week-col'>" + this._get(inst, "weekHeader") + "</th>" : ""); + for (dow = 0; dow < 7; dow++) { // days of the week + day = (dow + firstDay) % 7; + thead += "<th" + ((dow + firstDay + 6) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "") + ">" + + "<span title='" + dayNames[day] + "'>" + dayNamesMin[day] + "</span></th>"; + } + calender += thead + "</tr></thead><tbody>"; + daysInMonth = this._getDaysInMonth(drawYear, drawMonth); + if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) { + inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); + } + leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; + curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate + numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043) + this.maxRows = numRows; + printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); + for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows + calender += "<tr>"; + tbody = (!showWeek ? "" : "<td class='ui-datepicker-week-col'>" + + this._get(inst, "calculateWeek")(printDate) + "</td>"); + for (dow = 0; dow < 7; dow++) { // create date picker days + daySettings = (beforeShowDay ? + beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]); + otherMonth = (printDate.getMonth() !== drawMonth); + unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] || + (minDate && printDate < minDate) || (maxDate && printDate > maxDate); + tbody += "<td class='" + + ((dow + firstDay + 6) % 7 >= 5 ? " ui-datepicker-week-end" : "") + // highlight weekends + (otherMonth ? " ui-datepicker-other-month" : "") + // highlight days from other months + ((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key + (defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ? + // or defaultDate is current printedDate and defaultDate is selectedDate + " " + this._dayOverClass : "") + // highlight selected day + (unselectable ? " " + this._unselectableClass + " ui-state-disabled": "") + // highlight unselectable days + (otherMonth && !showOtherMonths ? "" : " " + daySettings[1] + // highlight custom dates + (printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "") + // highlight selected day + (printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "")) + "'" + // highlight today (if different) + ((!otherMonth || showOtherMonths) && daySettings[2] ? " title='" + daySettings[2] + "'" : "") + // cell title + (unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + // actions + (otherMonth && !showOtherMonths ? " " : // display for other months + (unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" + + (printDate.getTime() === today.getTime() ? " ui-state-highlight" : "") + + (printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "") + // highlight selected day + (otherMonth ? " ui-priority-secondary" : "") + // distinguish dates from other months + "' href='#'>" + printDate.getDate() + "</a>")) + "</td>"; // display selectable date + printDate.setDate(printDate.getDate() + 1); + printDate = this._daylightSavingAdjust(printDate); + } + calender += tbody + "</tr>"; + } + drawMonth++; + if (drawMonth > 11) { + drawMonth = 0; + drawYear++; + } + calender += "</tbody></table>" + (isMultiMonth ? "</div>" + + ((numMonths[0] > 0 && col === numMonths[1]-1) ? "<div class='ui-datepicker-row-break'></div>" : "") : ""); + group += calender; + } + html += group; + } + html += buttonPanel; + inst._keyEvent = false; + return html; + }, + + /* Generate the month and year header. */ + _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, + secondary, monthNames, monthNamesShort) { + + var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear, + changeMonth = this._get(inst, "changeMonth"), + changeYear = this._get(inst, "changeYear"), + showMonthAfterYear = this._get(inst, "showMonthAfterYear"), + html = "<div class='ui-datepicker-title'>", + monthHtml = ""; + + // month selection + if (secondary || !changeMonth) { + monthHtml += "<span class='ui-datepicker-month'>" + monthNames[drawMonth] + "</span>"; + } else { + inMinYear = (minDate && minDate.getFullYear() === drawYear); + inMaxYear = (maxDate && maxDate.getFullYear() === drawYear); + monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>"; + for ( month = 0; month < 12; month++) { + if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) { + monthHtml += "<option value='" + month + "'" + + (month === drawMonth ? " selected='selected'" : "") + + ">" + monthNamesShort[month] + "</option>"; + } + } + monthHtml += "</select>"; + } + + if (!showMonthAfterYear) { + html += monthHtml + (secondary || !(changeMonth && changeYear) ? " " : ""); + } + + // year selection + if ( !inst.yearshtml ) { + inst.yearshtml = ""; + if (secondary || !changeYear) { + html += "<span class='ui-datepicker-year'>" + drawYear + "</span>"; + } else { + // determine range of years to display + years = this._get(inst, "yearRange").split(":"); + thisYear = new Date().getFullYear(); + determineYear = function(value) { + var year = (value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) : + (value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) : + parseInt(value, 10))); + return (isNaN(year) ? thisYear : year); + }; + year = determineYear(years[0]); + endYear = Math.max(year, determineYear(years[1] || "")); + year = (minDate ? Math.max(year, minDate.getFullYear()) : year); + endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); + inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>"; + for (; year <= endYear; year++) { + inst.yearshtml += "<option value='" + year + "'" + + (year === drawYear ? " selected='selected'" : "") + + ">" + year + "</option>"; + } + inst.yearshtml += "</select>"; + + html += inst.yearshtml; + inst.yearshtml = null; + } + } + + html += this._get(inst, "yearSuffix"); + if (showMonthAfterYear) { + html += (secondary || !(changeMonth && changeYear) ? " " : "") + monthHtml; + } + html += "</div>"; // Close datepicker_header + return html; + }, + + /* Adjust one of the date sub-fields. */ + _adjustInstDate: function(inst, offset, period) { + var year = inst.drawYear + (period === "Y" ? offset : 0), + month = inst.drawMonth + (period === "M" ? offset : 0), + day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0), + date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day))); + + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + if (period === "M" || period === "Y") { + this._notifyChange(inst); + } + }, + + /* Ensure a date is within any min/max bounds. */ + _restrictMinMax: function(inst, date) { + var minDate = this._getMinMaxDate(inst, "min"), + maxDate = this._getMinMaxDate(inst, "max"), + newDate = (minDate && date < minDate ? minDate : date); + return (maxDate && newDate > maxDate ? maxDate : newDate); + }, + + /* Notify change of month/year. */ + _notifyChange: function(inst) { + var onChange = this._get(inst, "onChangeMonthYear"); + if (onChange) { + onChange.apply((inst.input ? inst.input[0] : null), + [inst.selectedYear, inst.selectedMonth + 1, inst]); + } + }, + + /* Determine the number of months to show. */ + _getNumberOfMonths: function(inst) { + var numMonths = this._get(inst, "numberOfMonths"); + return (numMonths == null ? [1, 1] : (typeof numMonths === "number" ? [1, numMonths] : numMonths)); + }, + + /* Determine the current maximum date - ensure no time components are set. */ + _getMinMaxDate: function(inst, minMax) { + return this._determineDate(inst, this._get(inst, minMax + "Date"), null); + }, + + /* Find the number of days in a given month. */ + _getDaysInMonth: function(year, month) { + return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate(); + }, + + /* Find the day of the week of the first of a month. */ + _getFirstDayOfMonth: function(year, month) { + return new Date(year, month, 1).getDay(); + }, + + /* Determines if we should allow a "next/prev" month display change. */ + _canAdjustMonth: function(inst, offset, curYear, curMonth) { + var numMonths = this._getNumberOfMonths(inst), + date = this._daylightSavingAdjust(new Date(curYear, + curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1)); + + if (offset < 0) { + date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); + } + return this._isInRange(inst, date); + }, + + /* Is the given date in the accepted range? */ + _isInRange: function(inst, date) { + var yearSplit, currentYear, + minDate = this._getMinMaxDate(inst, "min"), + maxDate = this._getMinMaxDate(inst, "max"), + minYear = null, + maxYear = null, + years = this._get(inst, "yearRange"); + if (years){ + yearSplit = years.split(":"); + currentYear = new Date().getFullYear(); + minYear = parseInt(yearSplit[0], 10) + currentYear; + maxYear = parseInt(yearSplit[1], 10) + currentYear; + } + + return ((!minDate || date.getTime() >= minDate.getTime()) && + (!maxDate || date.getTime() <= maxDate.getTime()) && + (!minYear || date.getFullYear() >= minYear) && + (!maxYear || date.getFullYear() <= maxYear)); + }, + + /* Provide the configuration settings for formatting/parsing. */ + _getFormatConfig: function(inst) { + var shortYearCutoff = this._get(inst, "shortYearCutoff"); + shortYearCutoff = (typeof shortYearCutoff !== "string" ? shortYearCutoff : + new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); + return {shortYearCutoff: shortYearCutoff, + dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"), + monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames")}; + }, + + /* Format the given date for display. */ + _formatDate: function(inst, day, month, year) { + if (!day) { + inst.currentDay = inst.selectedDay; + inst.currentMonth = inst.selectedMonth; + inst.currentYear = inst.selectedYear; + } + var date = (day ? (typeof day === "object" ? day : + this._daylightSavingAdjust(new Date(year, month, day))) : + this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); + return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst)); + } +}); + +/* + * Bind hover events for datepicker elements. + * Done via delegate so the binding only occurs once in the lifetime of the parent div. + * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker. + */ +function bindHover(dpDiv) { + var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"; + return dpDiv.delegate(selector, "mouseout", function() { + $(this).removeClass("ui-state-hover"); + if (this.className.indexOf("ui-datepicker-prev") !== -1) { + $(this).removeClass("ui-datepicker-prev-hover"); + } + if (this.className.indexOf("ui-datepicker-next") !== -1) { + $(this).removeClass("ui-datepicker-next-hover"); + } + }) + .delegate(selector, "mouseover", function(){ + if (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) { + $(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"); + $(this).addClass("ui-state-hover"); + if (this.className.indexOf("ui-datepicker-prev") !== -1) { + $(this).addClass("ui-datepicker-prev-hover"); + } + if (this.className.indexOf("ui-datepicker-next") !== -1) { + $(this).addClass("ui-datepicker-next-hover"); + } + } + }); +} + +/* jQuery extend now ignores nulls! */ +function extendRemove(target, props) { + $.extend(target, props); + for (var name in props) { + if (props[name] == null) { + target[name] = props[name]; + } + } + return target; +} + +/* Invoke the datepicker functionality. + @param options string - a command, optionally followed by additional parameters or + Object - settings for attaching new datepicker functionality + @return jQuery object */ +$.fn.datepicker = function(options){ + + /* Verify an empty collection wasn't passed - Fixes #6976 */ + if ( !this.length ) { + return this; + } + + /* Initialise the date picker. */ + if (!$.datepicker.initialized) { + $(document).mousedown($.datepicker._checkExternalClick); + $.datepicker.initialized = true; + } + + /* Append datepicker main container to body if not exist. */ + if ($("#"+$.datepicker._mainDivId).length === 0) { + $("body").append($.datepicker.dpDiv); + } + + var otherArgs = Array.prototype.slice.call(arguments, 1); + if (typeof options === "string" && (options === "isDisabled" || options === "getDate" || options === "widget")) { + return $.datepicker["_" + options + "Datepicker"]. + apply($.datepicker, [this[0]].concat(otherArgs)); + } + if (options === "option" && arguments.length === 2 && typeof arguments[1] === "string") { + return $.datepicker["_" + options + "Datepicker"]. + apply($.datepicker, [this[0]].concat(otherArgs)); + } + return this.each(function() { + typeof options === "string" ? + $.datepicker["_" + options + "Datepicker"]. + apply($.datepicker, [this].concat(otherArgs)) : + $.datepicker._attachDatepicker(this, options); + }); +}; + +$.datepicker = new Datepicker(); // singleton instance +$.datepicker.initialized = false; +$.datepicker.uuid = new Date().getTime(); +$.datepicker.version = "1.10.0"; + +// Workaround for #4055 +// Add another global to avoid noConflict issues with inline event handlers +window["DP_jQuery_" + dpuuid] = $; + +})(jQuery); +(function( $, undefined ) { + +var sizeRelatedOptions = { + buttons: true, + height: true, + maxHeight: true, + maxWidth: true, + minHeight: true, + minWidth: true, + width: true + }, + resizableRelatedOptions = { + maxHeight: true, + maxWidth: true, + minHeight: true, + minWidth: true + }; + +$.widget( "ui.dialog", { + version: "1.10.0", + options: { + appendTo: "body", + autoOpen: true, + buttons: [], + closeOnEscape: true, + closeText: "close", + dialogClass: "", + draggable: true, + hide: null, + height: "auto", + maxHeight: null, + maxWidth: null, + minHeight: 150, + minWidth: 150, + modal: false, + position: { + my: "center", + at: "center", + of: window, + collision: "fit", + // Ensure the titlebar is always visible + using: function( pos ) { + var topOffset = $( this ).css( pos ).offset().top; + if ( topOffset < 0 ) { + $( this ).css( "top", pos.top - topOffset ); + } + } + }, + resizable: true, + show: null, + title: null, + width: 300, + + // callbacks + beforeClose: null, + close: null, + drag: null, + dragStart: null, + dragStop: null, + focus: null, + open: null, + resize: null, + resizeStart: null, + resizeStop: null + }, + + _create: function() { + this.originalCss = { + display: this.element[0].style.display, + width: this.element[0].style.width, + minHeight: this.element[0].style.minHeight, + maxHeight: this.element[0].style.maxHeight, + height: this.element[0].style.height + }; + this.originalPosition = { + parent: this.element.parent(), + index: this.element.parent().children().index( this.element ) + }; + this.originalTitle = this.element.attr("title"); + this.options.title = this.options.title || this.originalTitle; + + this._createWrapper(); + + this.element + .show() + .removeAttr("title") + .addClass("ui-dialog-content ui-widget-content") + .appendTo( this.uiDialog ); + + this._createTitlebar(); + this._createButtonPane(); + + if ( this.options.draggable && $.fn.draggable ) { + this._makeDraggable(); + } + if ( this.options.resizable && $.fn.resizable ) { + this._makeResizable(); + } + + this._isOpen = false; + }, + + _init: function() { + if ( this.options.autoOpen ) { + this.open(); + } + }, + + _appendTo: function() { + var element = this.options.appendTo; + if ( element && (element.jquery || element.nodeType) ) { + return $( element ); + } + return this.document.find( element || "body" ).eq( 0 ); + }, + + _destroy: function() { + var next, + originalPosition = this.originalPosition; + + this._destroyOverlay(); + + this.element + .removeUniqueId() + .removeClass("ui-dialog-content ui-widget-content") + .css( this.originalCss ) + // Without detaching first, the following becomes really slow + .detach(); + + this.uiDialog.stop( true, true ).remove(); + + if ( this.originalTitle ) { + this.element.attr( "title", this.originalTitle ); + } + + next = originalPosition.parent.children().eq( originalPosition.index ); + // Don't try to place the dialog next to itself (#8613) + if ( next.length && next[0] !== this.element[0] ) { + next.before( this.element ); + } else { + originalPosition.parent.append( this.element ); + } + }, + + widget: function() { + return this.uiDialog; + }, + + disable: $.noop, + enable: $.noop, + + close: function( event ) { + var that = this; + + if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) { + return; + } + + this._isOpen = false; + this._destroyOverlay(); + + if ( !this.opener.filter(":focusable").focus().length ) { + // Hiding a focused element doesn't trigger blur in WebKit + // so in case we have nothing to focus on, explicitly blur the active element + // https://bugs.webkit.org/show_bug.cgi?id=47182 + $( this.document[0].activeElement ).blur(); + } + + this._hide( this.uiDialog, this.options.hide, function() { + that._trigger( "close", event ); + }); + }, + + isOpen: function() { + return this._isOpen; + }, + + moveToTop: function() { + this._moveToTop(); + }, + + _moveToTop: function( event, silent ) { + var moved = !!this.uiDialog.nextAll(":visible").insertBefore( this.uiDialog ).length; + if ( moved && !silent ) { + this._trigger( "focus", event ); + } + return moved; + }, + + open: function() { + if ( this._isOpen ) { + if ( this._moveToTop() ) { + this._focusTabbable(); + } + return; + } + + this.opener = $( this.document[0].activeElement ); + + this._size(); + this._position(); + this._createOverlay(); + this._moveToTop( null, true ); + this._show( this.uiDialog, this.options.show ); + + this._focusTabbable(); + + this._isOpen = true; + this._trigger("open"); + this._trigger("focus"); + }, + + _focusTabbable: function() { + // Set focus to the first match: + // 1. First element inside the dialog matching [autofocus] + // 2. Tabbable element inside the content element + // 3. Tabbable element inside the buttonpane + // 4. The close button + // 5. The dialog itself + var hasFocus = this.element.find("[autofocus]"); + if ( !hasFocus.length ) { + hasFocus = this.element.find(":tabbable"); + } + if ( !hasFocus.length ) { + hasFocus = this.uiDialogButtonPane.find(":tabbable"); + } + if ( !hasFocus.length ) { + hasFocus = this.uiDialogTitlebarClose.filter(":tabbable"); + } + if ( !hasFocus.length ) { + hasFocus = this.uiDialog; + } + hasFocus.eq( 0 ).focus(); + }, + + _keepFocus: function( event ) { + function checkFocus() { + var activeElement = this.document[0].activeElement, + isActive = this.uiDialog[0] === activeElement || + $.contains( this.uiDialog[0], activeElement ); + if ( !isActive ) { + this._focusTabbable(); + } + } + event.preventDefault(); + checkFocus.call( this ); + // support: IE + // IE <= 8 doesn't prevent moving focus even with event.preventDefault() + // so we check again later + this._delay( checkFocus ); + }, + + _createWrapper: function() { + this.uiDialog = $("<div>") + .addClass( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-front " + + this.options.dialogClass ) + .hide() + .attr({ + // Setting tabIndex makes the div focusable + tabIndex: -1, + role: "dialog" + }) + .appendTo( this._appendTo() ); + + this._on( this.uiDialog, { + keydown: function( event ) { + if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && + event.keyCode === $.ui.keyCode.ESCAPE ) { + event.preventDefault(); + this.close( event ); + return; + } + + // prevent tabbing out of dialogs + if ( event.keyCode !== $.ui.keyCode.TAB ) { + return; + } + var tabbables = this.uiDialog.find(":tabbable"), + first = tabbables.filter(":first"), + last = tabbables.filter(":last"); + + if ( ( event.target === last[0] || event.target === this.uiDialog[0] ) && !event.shiftKey ) { + first.focus( 1 ); + event.preventDefault(); + } else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) { + last.focus( 1 ); + event.preventDefault(); + } + }, + mousedown: function( event ) { + if ( this._moveToTop( event ) ) { + this._focusTabbable(); + } + } + }); + + // We assume that any existing aria-describedby attribute means + // that the dialog content is marked up properly + // otherwise we brute force the content as the description + if ( !this.element.find("[aria-describedby]").length ) { + this.uiDialog.attr({ + "aria-describedby": this.element.uniqueId().attr("id") + }); + } + }, + + _createTitlebar: function() { + var uiDialogTitle; + + this.uiDialogTitlebar = $("<div>") + .addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix") + .prependTo( this.uiDialog ); + this._on( this.uiDialogTitlebar, { + mousedown: function( event ) { + // Don't prevent click on close button (#8838) + // Focusing a dialog that is partially scrolled out of view + // causes the browser to scroll it into view, preventing the click event + if ( !$( event.target ).closest(".ui-dialog-titlebar-close") ) { + // Dialog isn't getting focus when dragging (#8063) + this.uiDialog.focus(); + } + } + }); + + this.uiDialogTitlebarClose = $("<button></button>") + .button({ + label: this.options.closeText, + icons: { + primary: "ui-icon-closethick" + }, + text: false + }) + .addClass("ui-dialog-titlebar-close") + .appendTo( this.uiDialogTitlebar ); + this._on( this.uiDialogTitlebarClose, { + click: function( event ) { + event.preventDefault(); + this.close( event ); + } + }); + + uiDialogTitle = $("<span>") + .uniqueId() + .addClass("ui-dialog-title") + .prependTo( this.uiDialogTitlebar ); + this._title( uiDialogTitle ); + + this.uiDialog.attr({ + "aria-labelledby": uiDialogTitle.attr("id") + }); + }, + + _title: function( title ) { + if ( !this.options.title ) { + title.html(" "); + } + title.text( this.options.title ); + }, + + _createButtonPane: function() { + this.uiDialogButtonPane = $("<div>") + .addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"); + + this.uiButtonSet = $("<div>") + .addClass("ui-dialog-buttonset") + .appendTo( this.uiDialogButtonPane ); + + this._createButtons(); + }, + + _createButtons: function() { + var that = this, + buttons = this.options.buttons; + + // if we already have a button pane, remove it + this.uiDialogButtonPane.remove(); + this.uiButtonSet.empty(); + + if ( $.isEmptyObject( buttons ) ) { + this.uiDialog.removeClass("ui-dialog-buttons"); + return; + } + + $.each( buttons, function( name, props ) { + var click, buttonOptions; + props = $.isFunction( props ) ? + { click: props, text: name } : + props; + // Default to a non-submitting button + props = $.extend( { type: "button" }, props ); + // Change the context for the click callback to be the main element + click = props.click; + props.click = function() { + click.apply( that.element[0], arguments ); + }; + buttonOptions = { + icons: props.icons, + text: props.showText + }; + delete props.icons; + delete props.showText; + $( "<button></button>", props ) + .button( buttonOptions ) + .appendTo( that.uiButtonSet ); + }); + this.uiDialog.addClass("ui-dialog-buttons"); + this.uiDialogButtonPane.appendTo( this.uiDialog ); + }, + + _makeDraggable: function() { + var that = this, + options = this.options; + + function filteredUi( ui ) { + return { + position: ui.position, + offset: ui.offset + }; + } + + this.uiDialog.draggable({ + cancel: ".ui-dialog-content, .ui-dialog-titlebar-close", + handle: ".ui-dialog-titlebar", + containment: "document", + start: function( event, ui ) { + $( this ).addClass("ui-dialog-dragging"); + that._trigger( "dragStart", event, filteredUi( ui ) ); + }, + drag: function( event, ui ) { + that._trigger( "drag", event, filteredUi( ui ) ); + }, + stop: function( event, ui ) { + options.position = [ + ui.position.left - that.document.scrollLeft(), + ui.position.top - that.document.scrollTop() + ]; + $( this ).removeClass("ui-dialog-dragging"); + that._trigger( "dragStop", event, filteredUi( ui ) ); + } + }); + }, + + _makeResizable: function() { + var that = this, + options = this.options, + handles = options.resizable, + // .ui-resizable has position: relative defined in the stylesheet + // but dialogs have to use absolute or fixed positioning + position = this.uiDialog.css("position"), + resizeHandles = typeof handles === "string" ? + handles : + "n,e,s,w,se,sw,ne,nw"; + + function filteredUi( ui ) { + return { + originalPosition: ui.originalPosition, + originalSize: ui.originalSize, + position: ui.position, + size: ui.size + }; + } + + this.uiDialog.resizable({ + cancel: ".ui-dialog-content", + containment: "document", + alsoResize: this.element, + maxWidth: options.maxWidth, + maxHeight: options.maxHeight, + minWidth: options.minWidth, + minHeight: this._minHeight(), + handles: resizeHandles, + start: function( event, ui ) { + $( this ).addClass("ui-dialog-resizing"); + that._trigger( "resizeStart", event, filteredUi( ui ) ); + }, + resize: function( event, ui ) { + that._trigger( "resize", event, filteredUi( ui ) ); + }, + stop: function( event, ui ) { + options.height = $( this ).height(); + options.width = $( this ).width(); + $( this ).removeClass("ui-dialog-resizing"); + that._trigger( "resizeStop", event, filteredUi( ui ) ); + } + }) + .css( "position", position ); + }, + + _minHeight: function() { + var options = this.options; + + return options.height === "auto" ? + options.minHeight : + Math.min( options.minHeight, options.height ); + }, + + _position: function() { + // Need to show the dialog to get the actual offset in the position plugin + var isVisible = this.uiDialog.is(":visible"); + if ( !isVisible ) { + this.uiDialog.show(); + } + this.uiDialog.position( this.options.position ); + if ( !isVisible ) { + this.uiDialog.hide(); + } + }, + + _setOptions: function( options ) { + var that = this, + resize = false, + resizableOptions = {}; + + $.each( options, function( key, value ) { + that._setOption( key, value ); + + if ( key in sizeRelatedOptions ) { + resize = true; + } + if ( key in resizableRelatedOptions ) { + resizableOptions[ key ] = value; + } + }); + + if ( resize ) { + this._size(); + this._position(); + } + if ( this.uiDialog.is(":data(ui-resizable)") ) { + this.uiDialog.resizable( "option", resizableOptions ); + } + }, + + _setOption: function( key, value ) { + /*jshint maxcomplexity:15*/ + var isDraggable, isResizable, + uiDialog = this.uiDialog; + + if ( key === "dialogClass" ) { + uiDialog + .removeClass( this.options.dialogClass ) + .addClass( value ); + } + + if ( key === "disabled" ) { + return; + } + + this._super( key, value ); + + if ( key === "appendTo" ) { + this.uiDialog.appendTo( this._appendTo() ); + } + + if ( key === "buttons" ) { + this._createButtons(); + } + + if ( key === "closeText" ) { + this.uiDialogTitlebarClose.button({ + // Ensure that we always pass a string + label: "" + value + }); + } + + if ( key === "draggable" ) { + isDraggable = uiDialog.is(":data(ui-draggable)"); + if ( isDraggable && !value ) { + uiDialog.draggable("destroy"); + } + + if ( !isDraggable && value ) { + this._makeDraggable(); + } + } + + if ( key === "position" ) { + this._position(); + } + + if ( key === "resizable" ) { + // currently resizable, becoming non-resizable + isResizable = uiDialog.is(":data(ui-resizable)"); + if ( isResizable && !value ) { + uiDialog.resizable("destroy"); + } + + // currently resizable, changing handles + if ( isResizable && typeof value === "string" ) { + uiDialog.resizable( "option", "handles", value ); + } + + // currently non-resizable, becoming resizable + if ( !isResizable && value !== false ) { + this._makeResizable(); + } + } + + if ( key === "title" ) { + this._title( this.uiDialogTitlebar.find(".ui-dialog-title") ); + } + }, + + _size: function() { + // If the user has resized the dialog, the .ui-dialog and .ui-dialog-content + // divs will both have width and height set, so we need to reset them + var nonContentHeight, minContentHeight, maxContentHeight, + options = this.options; + + // Reset content sizing + this.element.show().css({ + width: "auto", + minHeight: 0, + maxHeight: "none", + height: 0 + }); + + if ( options.minWidth > options.width ) { + options.width = options.minWidth; + } + + // reset wrapper sizing + // determine the height of all the non-content elements + nonContentHeight = this.uiDialog.css({ + height: "auto", + width: options.width + }) + .outerHeight(); + minContentHeight = Math.max( 0, options.minHeight - nonContentHeight ); + maxContentHeight = typeof options.maxHeight === "number" ? + Math.max( 0, options.maxHeight - nonContentHeight ) : + "none"; + + if ( options.height === "auto" ) { + this.element.css({ + minHeight: minContentHeight, + maxHeight: maxContentHeight, + height: "auto" + }); + } else { + this.element.height( Math.max( 0, options.height - nonContentHeight ) ); + } + + if (this.uiDialog.is(":data(ui-resizable)") ) { + this.uiDialog.resizable( "option", "minHeight", this._minHeight() ); + } + }, + + _createOverlay: function() { + if ( !this.options.modal ) { + return; + } + + if ( !$.ui.dialog.overlayInstances ) { + // Prevent use of anchors and inputs. + // We use a delay in case the overlay is created from an + // event that we're going to be cancelling. (#2804) + this._delay(function() { + // Handle .dialog().dialog("close") (#4065) + if ( $.ui.dialog.overlayInstances ) { + this._on( this.document, { + focusin: function( event ) { + if ( !$( event.target ).closest(".ui-dialog").length ) { + event.preventDefault(); + $(".ui-dialog:visible:last .ui-dialog-content") + .data("ui-dialog")._focusTabbable(); + } + } + }); + } + }); + } + + this.overlay = $("<div>") + .addClass("ui-widget-overlay ui-front") + .appendTo( this.document[0].body ); + this._on( this.overlay, { + mousedown: "_keepFocus" + }); + $.ui.dialog.overlayInstances++; + }, + + _destroyOverlay: function() { + if ( !this.options.modal ) { + return; + } + + $.ui.dialog.overlayInstances--; + if ( !$.ui.dialog.overlayInstances ) { + this._off( this.document, "focusin" ); + } + this.overlay.remove(); + } +}); + +$.ui.dialog.overlayInstances = 0; + +// DEPRECATED +if ( $.uiBackCompat !== false ) { + // position option with array notation + // just override with old implementation + $.widget( "ui.dialog", $.ui.dialog, { + _position: function() { + var position = this.options.position, + myAt = [], + offset = [ 0, 0 ], + isVisible; + + if ( position ) { + if ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) { + myAt = position.split ? position.split(" ") : [ position[0], position[1] ]; + if ( myAt.length === 1 ) { + myAt[1] = myAt[0]; + } + + $.each( [ "left", "top" ], function( i, offsetPosition ) { + if ( +myAt[ i ] === myAt[ i ] ) { + offset[ i ] = myAt[ i ]; + myAt[ i ] = offsetPosition; + } + }); + + position = { + my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " + + myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]), + at: myAt.join(" ") + }; + } + + position = $.extend( {}, $.ui.dialog.prototype.options.position, position ); + } else { + position = $.ui.dialog.prototype.options.position; + } + + // need to show the dialog to get the actual offset in the position plugin + isVisible = this.uiDialog.is(":visible"); + if ( !isVisible ) { + this.uiDialog.show(); + } + this.uiDialog.position( position ); + if ( !isVisible ) { + this.uiDialog.hide(); + } + } + }); +} + +}( jQuery ) ); +(function( $, undefined ) { + +$.widget( "ui.menu", { + version: "1.10.0", + defaultElement: "<ul>", + delay: 300, + options: { + icons: { + submenu: "ui-icon-carat-1-e" + }, + menus: "ul", + position: { + my: "left top", + at: "right top" + }, + role: "menu", + + // callbacks + blur: null, + focus: null, + select: null + }, + + _create: function() { + this.activeMenu = this.element; + // flag used to prevent firing of the click handler + // as the event bubbles up through nested menus + this.mouseHandled = false; + this.element + .uniqueId() + .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" ) + .toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ) + .attr({ + role: this.options.role, + tabIndex: 0 + }) + // need to catch all clicks on disabled menu + // not possible through _on + .bind( "click" + this.eventNamespace, $.proxy(function( event ) { + if ( this.options.disabled ) { + event.preventDefault(); + } + }, this )); + + if ( this.options.disabled ) { + this.element + .addClass( "ui-state-disabled" ) + .attr( "aria-disabled", "true" ); + } + + this._on({ + // Prevent focus from sticking to links inside menu after clicking + // them (focus should always stay on UL during navigation). + "mousedown .ui-menu-item > a": function( event ) { + event.preventDefault(); + }, + "click .ui-state-disabled > a": function( event ) { + event.preventDefault(); + }, + "click .ui-menu-item:has(a)": function( event ) { + var target = $( event.target ).closest( ".ui-menu-item" ); + if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) { + this.mouseHandled = true; + + this.select( event ); + // Open submenu on click + if ( target.has( ".ui-menu" ).length ) { + this.expand( event ); + } else if ( !this.element.is( ":focus" ) ) { + // Redirect focus to the menu + this.element.trigger( "focus", [ true ] ); + + // If the active item is on the top level, let it stay active. + // Otherwise, blur the active item since it is no longer visible. + if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) { + clearTimeout( this.timer ); + } + } + } + }, + "mouseenter .ui-menu-item": function( event ) { + var target = $( event.currentTarget ); + // Remove ui-state-active class from siblings of the newly focused menu item + // to avoid a jump caused by adjacent elements both having a class with a border + target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" ); + this.focus( event, target ); + }, + mouseleave: "collapseAll", + "mouseleave .ui-menu": "collapseAll", + focus: function( event, keepActiveItem ) { + // If there's already an active item, keep it active + // If not, activate the first item + var item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 ); + + if ( !keepActiveItem ) { + this.focus( event, item ); + } + }, + blur: function( event ) { + this._delay(function() { + if ( !$.contains( this.element[0], this.document[0].activeElement ) ) { + this.collapseAll( event ); + } + }); + }, + keydown: "_keydown" + }); + + this.refresh(); + + // Clicks outside of a menu collapse any open menus + this._on( this.document, { + click: function( event ) { + if ( !$( event.target ).closest( ".ui-menu" ).length ) { + this.collapseAll( event ); + } + + // Reset the mouseHandled flag + this.mouseHandled = false; + } + }); + }, + + _destroy: function() { + // Destroy (sub)menus + this.element + .removeAttr( "aria-activedescendant" ) + .find( ".ui-menu" ).addBack() + .removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" ) + .removeAttr( "role" ) + .removeAttr( "tabIndex" ) + .removeAttr( "aria-labelledby" ) + .removeAttr( "aria-expanded" ) + .removeAttr( "aria-hidden" ) + .removeAttr( "aria-disabled" ) + .removeUniqueId() + .show(); + + // Destroy menu items + this.element.find( ".ui-menu-item" ) + .removeClass( "ui-menu-item" ) + .removeAttr( "role" ) + .removeAttr( "aria-disabled" ) + .children( "a" ) + .removeUniqueId() + .removeClass( "ui-corner-all ui-state-hover" ) + .removeAttr( "tabIndex" ) + .removeAttr( "role" ) + .removeAttr( "aria-haspopup" ) + .children().each( function() { + var elem = $( this ); + if ( elem.data( "ui-menu-submenu-carat" ) ) { + elem.remove(); + } + }); + + // Destroy menu dividers + this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" ); + }, + + _keydown: function( event ) { + /*jshint maxcomplexity:20*/ + var match, prev, character, skip, regex, + preventDefault = true; + + function escape( value ) { + return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ); + } + + switch ( event.keyCode ) { + case $.ui.keyCode.PAGE_UP: + this.previousPage( event ); + break; + case $.ui.keyCode.PAGE_DOWN: + this.nextPage( event ); + break; + case $.ui.keyCode.HOME: + this._move( "first", "first", event ); + break; + case $.ui.keyCode.END: + this._move( "last", "last", event ); + break; + case $.ui.keyCode.UP: + this.previous( event ); + break; + case $.ui.keyCode.DOWN: + this.next( event ); + break; + case $.ui.keyCode.LEFT: + this.collapse( event ); + break; + case $.ui.keyCode.RIGHT: + if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { + this.expand( event ); + } + break; + case $.ui.keyCode.ENTER: + case $.ui.keyCode.SPACE: + this._activate( event ); + break; + case $.ui.keyCode.ESCAPE: + this.collapse( event ); + break; + default: + preventDefault = false; + prev = this.previousFilter || ""; + character = String.fromCharCode( event.keyCode ); + skip = false; + + clearTimeout( this.filterTimer ); + + if ( character === prev ) { + skip = true; + } else { + character = prev + character; + } + + regex = new RegExp( "^" + escape( character ), "i" ); + match = this.activeMenu.children( ".ui-menu-item" ).filter(function() { + return regex.test( $( this ).children( "a" ).text() ); + }); + match = skip && match.index( this.active.next() ) !== -1 ? + this.active.nextAll( ".ui-menu-item" ) : + match; + + // If no matches on the current filter, reset to the last character pressed + // to move down the menu to the first item that starts with that character + if ( !match.length ) { + character = String.fromCharCode( event.keyCode ); + regex = new RegExp( "^" + escape( character ), "i" ); + match = this.activeMenu.children( ".ui-menu-item" ).filter(function() { + return regex.test( $( this ).children( "a" ).text() ); + }); + } + + if ( match.length ) { + this.focus( event, match ); + if ( match.length > 1 ) { + this.previousFilter = character; + this.filterTimer = this._delay(function() { + delete this.previousFilter; + }, 1000 ); + } else { + delete this.previousFilter; + } + } else { + delete this.previousFilter; + } + } + + if ( preventDefault ) { + event.preventDefault(); + } + }, + + _activate: function( event ) { + if ( !this.active.is( ".ui-state-disabled" ) ) { + if ( this.active.children( "a[aria-haspopup='true']" ).length ) { + this.expand( event ); + } else { + this.select( event ); + } + } + }, + + refresh: function() { + var menus, + icon = this.options.icons.submenu, + submenus = this.element.find( this.options.menus ); + + // Initialize nested menus + submenus.filter( ":not(.ui-menu)" ) + .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" ) + .hide() + .attr({ + role: this.options.role, + "aria-hidden": "true", + "aria-expanded": "false" + }) + .each(function() { + var menu = $( this ), + item = menu.prev( "a" ), + submenuCarat = $( "<span>" ) + .addClass( "ui-menu-icon ui-icon " + icon ) + .data( "ui-menu-submenu-carat", true ); + + item + .attr( "aria-haspopup", "true" ) + .prepend( submenuCarat ); + menu.attr( "aria-labelledby", item.attr( "id" ) ); + }); + + menus = submenus.add( this.element ); + + // Don't refresh list items that are already adapted + menus.children( ":not(.ui-menu-item):has(a)" ) + .addClass( "ui-menu-item" ) + .attr( "role", "presentation" ) + .children( "a" ) + .uniqueId() + .addClass( "ui-corner-all" ) + .attr({ + tabIndex: -1, + role: this._itemRole() + }); + + // Initialize unlinked menu-items containing spaces and/or dashes only as dividers + menus.children( ":not(.ui-menu-item)" ).each(function() { + var item = $( this ); + // hyphen, em dash, en dash + if ( !/[^\-—–\s]/.test( item.text() ) ) { + item.addClass( "ui-widget-content ui-menu-divider" ); + } + }); + + // Add aria-disabled attribute to any disabled menu item + menus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" ); + + // If the active item has been removed, blur the menu + if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { + this.blur(); + } + }, + + _itemRole: function() { + return { + menu: "menuitem", + listbox: "option" + }[ this.options.role ]; + }, + + _setOption: function( key, value ) { + if ( key === "icons" ) { + this.element.find( ".ui-menu-icon" ) + .removeClass( this.options.icons.submenu ) + .addClass( value.submenu ); + } + this._super( key, value ); + }, + + focus: function( event, item ) { + var nested, focused; + this.blur( event, event && event.type === "focus" ); + + this._scrollIntoView( item ); + + this.active = item.first(); + focused = this.active.children( "a" ).addClass( "ui-state-focus" ); + // Only update aria-activedescendant if there's a role + // otherwise we assume focus is managed elsewhere + if ( this.options.role ) { + this.element.attr( "aria-activedescendant", focused.attr( "id" ) ); + } + + // Highlight active parent menu item, if any + this.active + .parent() + .closest( ".ui-menu-item" ) + .children( "a:first" ) + .addClass( "ui-state-active" ); + + if ( event && event.type === "keydown" ) { + this._close(); + } else { + this.timer = this._delay(function() { + this._close(); + }, this.delay ); + } + + nested = item.children( ".ui-menu" ); + if ( nested.length && ( /^mouse/.test( event.type ) ) ) { + this._startOpening(nested); + } + this.activeMenu = item.parent(); + + this._trigger( "focus", event, { item: item } ); + }, + + _scrollIntoView: function( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height(); + itemHeight = item.height(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }, + + blur: function( event, fromFocus ) { + if ( !fromFocus ) { + clearTimeout( this.timer ); + } + + if ( !this.active ) { + return; + } + + this.active.children( "a" ).removeClass( "ui-state-focus" ); + this.active = null; + + this._trigger( "blur", event, { item: this.active } ); + }, + + _startOpening: function( submenu ) { + clearTimeout( this.timer ); + + // Don't open if already open fixes a Firefox bug that caused a .5 pixel + // shift in the submenu position when mousing over the carat icon + if ( submenu.attr( "aria-hidden" ) !== "true" ) { + return; + } + + this.timer = this._delay(function() { + this._close(); + this._open( submenu ); + }, this.delay ); + }, + + _open: function( submenu ) { + var position = $.extend({ + of: this.active + }, this.options.position ); + + clearTimeout( this.timer ); + this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) ) + .hide() + .attr( "aria-hidden", "true" ); + + submenu + .show() + .removeAttr( "aria-hidden" ) + .attr( "aria-expanded", "true" ) + .position( position ); + }, + + collapseAll: function( event, all ) { + clearTimeout( this.timer ); + this.timer = this._delay(function() { + // If we were passed an event, look for the submenu that contains the event + var currentMenu = all ? this.element : + $( event && event.target ).closest( this.element.find( ".ui-menu" ) ); + + // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway + if ( !currentMenu.length ) { + currentMenu = this.element; + } + + this._close( currentMenu ); + + this.blur( event ); + this.activeMenu = currentMenu; + }, this.delay ); + }, + + // With no arguments, closes the currently active menu - if nothing is active + // it closes all menus. If passed an argument, it will search for menus BELOW + _close: function( startMenu ) { + if ( !startMenu ) { + startMenu = this.active ? this.active.parent() : this.element; + } + + startMenu + .find( ".ui-menu" ) + .hide() + .attr( "aria-hidden", "true" ) + .attr( "aria-expanded", "false" ) + .end() + .find( "a.ui-state-active" ) + .removeClass( "ui-state-active" ); + }, + + collapse: function( event ) { + var newItem = this.active && + this.active.parent().closest( ".ui-menu-item", this.element ); + if ( newItem && newItem.length ) { + this._close(); + this.focus( event, newItem ); + } + }, + + expand: function( event ) { + var newItem = this.active && + this.active + .children( ".ui-menu " ) + .children( ".ui-menu-item" ) + .first(); + + if ( newItem && newItem.length ) { + this._open( newItem.parent() ); + + // Delay so Firefox will not hide activedescendant change in expanding submenu from AT + this._delay(function() { + this.focus( event, newItem ); + }); + } + }, + + next: function( event ) { + this._move( "next", "first", event ); + }, + + previous: function( event ) { + this._move( "prev", "last", event ); + }, + + isFirstItem: function() { + return this.active && !this.active.prevAll( ".ui-menu-item" ).length; + }, + + isLastItem: function() { + return this.active && !this.active.nextAll( ".ui-menu-item" ).length; + }, + + _move: function( direction, filter, event ) { + var next; + if ( this.active ) { + if ( direction === "first" || direction === "last" ) { + next = this.active + [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" ) + .eq( -1 ); + } else { + next = this.active + [ direction + "All" ]( ".ui-menu-item" ) + .eq( 0 ); + } + } + if ( !next || !next.length || !this.active ) { + next = this.activeMenu.children( ".ui-menu-item" )[ filter ](); + } + + this.focus( event, next ); + }, + + nextPage: function( event ) { + var item, base, height; + + if ( !this.active ) { + this.next( event ); + return; + } + if ( this.isLastItem() ) { + return; + } + if ( this._hasScroll() ) { + base = this.active.offset().top; + height = this.element.height(); + this.active.nextAll( ".ui-menu-item" ).each(function() { + item = $( this ); + return item.offset().top - base - height < 0; + }); + + this.focus( event, item ); + } else { + this.focus( event, this.activeMenu.children( ".ui-menu-item" ) + [ !this.active ? "first" : "last" ]() ); + } + }, + + previousPage: function( event ) { + var item, base, height; + if ( !this.active ) { + this.next( event ); + return; + } + if ( this.isFirstItem() ) { + return; + } + if ( this._hasScroll() ) { + base = this.active.offset().top; + height = this.element.height(); + this.active.prevAll( ".ui-menu-item" ).each(function() { + item = $( this ); + return item.offset().top - base + height > 0; + }); + + this.focus( event, item ); + } else { + this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() ); + } + }, + + _hasScroll: function() { + return this.element.outerHeight() < this.element.prop( "scrollHeight" ); + }, + + select: function( event ) { + // TODO: It should never be possible to not have an active item at this + // point, but the tests don't trigger mouseenter before click. + this.active = this.active || $( event.target ).closest( ".ui-menu-item" ); + var ui = { item: this.active }; + if ( !this.active.has( ".ui-menu" ).length ) { + this.collapseAll( event, true ); + } + this._trigger( "select", event, ui ); + } +}); + +}( jQuery )); +(function( $, undefined ) { + +$.widget( "ui.progressbar", { + version: "1.10.0", + options: { + max: 100, + value: 0, + + change: null, + complete: null + }, + + min: 0, + + _create: function() { + // Constrain initial value + this.oldValue = this.options.value = this._constrainedValue(); + + this.element + .addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) + .attr({ + // Only set static values, aria-valuenow and aria-valuemax are + // set inside _refreshValue() + role: "progressbar", + "aria-valuemin": this.min + }); + + this.valueDiv = $( "<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>" ) + .appendTo( this.element ); + + this._refreshValue(); + }, + + _destroy: function() { + this.element + .removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) + .removeAttr( "role" ) + .removeAttr( "aria-valuemin" ) + .removeAttr( "aria-valuemax" ) + .removeAttr( "aria-valuenow" ); + + this.valueDiv.remove(); + }, + + value: function( newValue ) { + if ( newValue === undefined ) { + return this.options.value; + } + + this.options.value = this._constrainedValue( newValue ); + this._refreshValue(); + }, + + _constrainedValue: function( newValue ) { + if ( newValue === undefined ) { + newValue = this.options.value; + } + + this.indeterminate = newValue === false; + + // sanitize value + if ( typeof newValue !== "number" ) { + newValue = 0; + } + + return this.indeterminate ? false : + Math.min( this.options.max, Math.max( this.min, newValue ) ); + }, + + _setOptions: function( options ) { + // Ensure "value" option is set after other values (like max) + var value = options.value; + delete options.value; + + this._super( options ); + + this.options.value = this._constrainedValue( value ); + this._refreshValue(); + }, + + _setOption: function( key, value ) { + if ( key === "max" ) { + // Don't allow a max less than min + value = Math.max( this.min, value ); + } + + this._super( key, value ); + }, + + _percentage: function() { + return this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min ); + }, + + _refreshValue: function() { + var value = this.options.value, + percentage = this._percentage(); + + this.valueDiv + .toggle( this.indeterminate || value > this.min ) + .toggleClass( "ui-corner-right", value === this.options.max ) + .width( percentage.toFixed(0) + "%" ); + + this.element.toggleClass( "ui-progressbar-indeterminate", this.indeterminate ); + + if ( this.indeterminate ) { + this.element.removeAttr( "aria-valuenow" ); + if ( !this.overlayDiv ) { + this.overlayDiv = $( "<div class='ui-progressbar-overlay'></div>" ).appendTo( this.valueDiv ); + } + } else { + this.element.attr({ + "aria-valuemax": this.options.max, + "aria-valuenow": value + }); + if ( this.overlayDiv ) { + this.overlayDiv.remove(); + this.overlayDiv = null; + } + } + + if ( this.oldValue !== value ) { + this.oldValue = value; + this._trigger( "change" ); + } + if ( value === this.options.max ) { + this._trigger( "complete" ); + } + } +}); + +})( jQuery ); +(function( $, undefined ) { + +// number of pages in a slider +// (how many times can you page up/down to go through the whole range) +var numPages = 5; + +$.widget( "ui.slider", $.ui.mouse, { + version: "1.10.0", + widgetEventPrefix: "slide", + + options: { + animate: false, + distance: 0, + max: 100, + min: 0, + orientation: "horizontal", + range: false, + step: 1, + value: 0, + values: null, + + // callbacks + change: null, + slide: null, + start: null, + stop: null + }, + + _create: function() { + var i, handleCount, + o = this.options, + existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ), + handle = "<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>", + handles = []; + + this._keySliding = false; + this._mouseSliding = false; + this._animateOff = true; + this._handleIndex = null; + this._detectOrientation(); + this._mouseInit(); + + this.element + .addClass( "ui-slider" + + " ui-slider-" + this.orientation + + " ui-widget" + + " ui-widget-content" + + " ui-corner-all"); + + this.range = $([]); + + if ( o.range ) { + if ( o.range === true ) { + if ( !o.values ) { + o.values = [ this._valueMin(), this._valueMin() ]; + } else if ( o.values.length && o.values.length !== 2 ) { + o.values = [ o.values[0], o.values[0] ]; + } else if ( $.isArray( o.values ) ) { + o.values = o.values.slice(0); + } + } + + this.range = $( "<div></div>" ) + .appendTo( this.element ) + .addClass( "ui-slider-range" + + // note: this isn't the most fittingly semantic framework class for this element, + // but worked best visually with a variety of themes + " ui-widget-header" + + ( ( o.range === "min" || o.range === "max" ) ? " ui-slider-range-" + o.range : "" ) ); + } + + handleCount = ( o.values && o.values.length ) || 1; + + for ( i = existingHandles.length; i < handleCount; i++ ) { + handles.push( handle ); + } + + this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) ); + + this.handle = this.handles.eq( 0 ); + + this.handles.add( this.range ).filter( "a" ) + .click(function( event ) { + event.preventDefault(); + }) + .mouseenter(function() { + if ( !o.disabled ) { + $( this ).addClass( "ui-state-hover" ); + } + }) + .mouseleave(function() { + $( this ).removeClass( "ui-state-hover" ); + }) + .focus(function() { + if ( !o.disabled ) { + $( ".ui-slider .ui-state-focus" ).removeClass( "ui-state-focus" ); + $( this ).addClass( "ui-state-focus" ); + } else { + $( this ).blur(); + } + }) + .blur(function() { + $( this ).removeClass( "ui-state-focus" ); + }); + + this.handles.each(function( i ) { + $( this ).data( "ui-slider-handle-index", i ); + }); + + this._setOption( "disabled", o.disabled ); + + this._on( this.handles, this._handleEvents ); + + this._refreshValue(); + + this._animateOff = false; + }, + + _destroy: function() { + this.handles.remove(); + this.range.remove(); + + this.element + .removeClass( "ui-slider" + + " ui-slider-horizontal" + + " ui-slider-vertical" + + " ui-widget" + + " ui-widget-content" + + " ui-corner-all" ); + + this._mouseDestroy(); + }, + + _mouseCapture: function( event ) { + var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle, + that = this, + o = this.options; + + if ( o.disabled ) { + return false; + } + + this.elementSize = { + width: this.element.outerWidth(), + height: this.element.outerHeight() + }; + this.elementOffset = this.element.offset(); + + position = { x: event.pageX, y: event.pageY }; + normValue = this._normValueFromMouse( position ); + distance = this._valueMax() - this._valueMin() + 1; + this.handles.each(function( i ) { + var thisDistance = Math.abs( normValue - that.values(i) ); + if (( distance > thisDistance ) || + ( distance === thisDistance && + (i === that._lastChangedValue || that.values(i) === o.min ))) { + distance = thisDistance; + closestHandle = $( this ); + index = i; + } + }); + + allowed = this._start( event, index ); + if ( allowed === false ) { + return false; + } + this._mouseSliding = true; + + this._handleIndex = index; + + closestHandle + .addClass( "ui-state-active" ) + .focus(); + + offset = closestHandle.offset(); + mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" ); + this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : { + left: event.pageX - offset.left - ( closestHandle.width() / 2 ), + top: event.pageY - offset.top - + ( closestHandle.height() / 2 ) - + ( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) - + ( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) + + ( parseInt( closestHandle.css("marginTop"), 10 ) || 0) + }; + + if ( !this.handles.hasClass( "ui-state-hover" ) ) { + this._slide( event, index, normValue ); + } + this._animateOff = true; + return true; + }, + + _mouseStart: function() { + return true; + }, + + _mouseDrag: function( event ) { + var position = { x: event.pageX, y: event.pageY }, + normValue = this._normValueFromMouse( position ); + + this._slide( event, this._handleIndex, normValue ); + + return false; + }, + + _mouseStop: function( event ) { + this.handles.removeClass( "ui-state-active" ); + this._mouseSliding = false; + + this._stop( event, this._handleIndex ); + this._change( event, this._handleIndex ); + + this._handleIndex = null; + this._clickOffset = null; + this._animateOff = false; + + return false; + }, + + _detectOrientation: function() { + this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal"; + }, + + _normValueFromMouse: function( position ) { + var pixelTotal, + pixelMouse, + percentMouse, + valueTotal, + valueMouse; + + if ( this.orientation === "horizontal" ) { + pixelTotal = this.elementSize.width; + pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 ); + } else { + pixelTotal = this.elementSize.height; + pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 ); + } + + percentMouse = ( pixelMouse / pixelTotal ); + if ( percentMouse > 1 ) { + percentMouse = 1; + } + if ( percentMouse < 0 ) { + percentMouse = 0; + } + if ( this.orientation === "vertical" ) { + percentMouse = 1 - percentMouse; + } + + valueTotal = this._valueMax() - this._valueMin(); + valueMouse = this._valueMin() + percentMouse * valueTotal; + + return this._trimAlignValue( valueMouse ); + }, + + _start: function( event, index ) { + var uiHash = { + handle: this.handles[ index ], + value: this.value() + }; + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); + uiHash.values = this.values(); + } + return this._trigger( "start", event, uiHash ); + }, + + _slide: function( event, index, newVal ) { + var otherVal, + newValues, + allowed; + + if ( this.options.values && this.options.values.length ) { + otherVal = this.values( index ? 0 : 1 ); + + if ( ( this.options.values.length === 2 && this.options.range === true ) && + ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) ) + ) { + newVal = otherVal; + } + + if ( newVal !== this.values( index ) ) { + newValues = this.values(); + newValues[ index ] = newVal; + // A slide can be canceled by returning false from the slide callback + allowed = this._trigger( "slide", event, { + handle: this.handles[ index ], + value: newVal, + values: newValues + } ); + otherVal = this.values( index ? 0 : 1 ); + if ( allowed !== false ) { + this.values( index, newVal, true ); + } + } + } else { + if ( newVal !== this.value() ) { + // A slide can be canceled by returning false from the slide callback + allowed = this._trigger( "slide", event, { + handle: this.handles[ index ], + value: newVal + } ); + if ( allowed !== false ) { + this.value( newVal ); + } + } + } + }, + + _stop: function( event, index ) { + var uiHash = { + handle: this.handles[ index ], + value: this.value() + }; + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); + uiHash.values = this.values(); + } + + this._trigger( "stop", event, uiHash ); + }, + + _change: function( event, index ) { + if ( !this._keySliding && !this._mouseSliding ) { + var uiHash = { + handle: this.handles[ index ], + value: this.value() + }; + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); + uiHash.values = this.values(); + } + + //store the last changed value index for reference when handles overlap + this._lastChangedValue = index; + + this._trigger( "change", event, uiHash ); + } + }, + + value: function( newValue ) { + if ( arguments.length ) { + this.options.value = this._trimAlignValue( newValue ); + this._refreshValue(); + this._change( null, 0 ); + return; + } + + return this._value(); + }, + + values: function( index, newValue ) { + var vals, + newValues, + i; + + if ( arguments.length > 1 ) { + this.options.values[ index ] = this._trimAlignValue( newValue ); + this._refreshValue(); + this._change( null, index ); + return; + } + + if ( arguments.length ) { + if ( $.isArray( arguments[ 0 ] ) ) { + vals = this.options.values; + newValues = arguments[ 0 ]; + for ( i = 0; i < vals.length; i += 1 ) { + vals[ i ] = this._trimAlignValue( newValues[ i ] ); + this._change( null, i ); + } + this._refreshValue(); + } else { + if ( this.options.values && this.options.values.length ) { + return this._values( index ); + } else { + return this.value(); + } + } + } else { + return this._values(); + } + }, + + _setOption: function( key, value ) { + var i, + valsLength = 0; + + if ( $.isArray( this.options.values ) ) { + valsLength = this.options.values.length; + } + + $.Widget.prototype._setOption.apply( this, arguments ); + + switch ( key ) { + case "disabled": + if ( value ) { + this.handles.filter( ".ui-state-focus" ).blur(); + this.handles.removeClass( "ui-state-hover" ); + this.handles.prop( "disabled", true ); + } else { + this.handles.prop( "disabled", false ); + } + break; + case "orientation": + this._detectOrientation(); + this.element + .removeClass( "ui-slider-horizontal ui-slider-vertical" ) + .addClass( "ui-slider-" + this.orientation ); + this._refreshValue(); + break; + case "value": + this._animateOff = true; + this._refreshValue(); + this._change( null, 0 ); + this._animateOff = false; + break; + case "values": + this._animateOff = true; + this._refreshValue(); + for ( i = 0; i < valsLength; i += 1 ) { + this._change( null, i ); + } + this._animateOff = false; + break; + case "min": + case "max": + this._animateOff = true; + this._refreshValue(); + this._animateOff = false; + break; + } + }, + + //internal value getter + // _value() returns value trimmed by min and max, aligned by step + _value: function() { + var val = this.options.value; + val = this._trimAlignValue( val ); + + return val; + }, + + //internal values getter + // _values() returns array of values trimmed by min and max, aligned by step + // _values( index ) returns single value trimmed by min and max, aligned by step + _values: function( index ) { + var val, + vals, + i; + + if ( arguments.length ) { + val = this.options.values[ index ]; + val = this._trimAlignValue( val ); + + return val; + } else { + // .slice() creates a copy of the array + // this copy gets trimmed by min and max and then returned + vals = this.options.values.slice(); + for ( i = 0; i < vals.length; i+= 1) { + vals[ i ] = this._trimAlignValue( vals[ i ] ); + } + + return vals; + } + }, + + // returns the step-aligned value that val is closest to, between (inclusive) min and max + _trimAlignValue: function( val ) { + if ( val <= this._valueMin() ) { + return this._valueMin(); + } + if ( val >= this._valueMax() ) { + return this._valueMax(); + } + var step = ( this.options.step > 0 ) ? this.options.step : 1, + valModStep = (val - this._valueMin()) % step, + alignValue = val - valModStep; + + if ( Math.abs(valModStep) * 2 >= step ) { + alignValue += ( valModStep > 0 ) ? step : ( -step ); + } + + // Since JavaScript has problems with large floats, round + // the final value to 5 digits after the decimal point (see #4124) + return parseFloat( alignValue.toFixed(5) ); + }, + + _valueMin: function() { + return this.options.min; + }, + + _valueMax: function() { + return this.options.max; + }, + + _refreshValue: function() { + var lastValPercent, valPercent, value, valueMin, valueMax, + oRange = this.options.range, + o = this.options, + that = this, + animate = ( !this._animateOff ) ? o.animate : false, + _set = {}; + + if ( this.options.values && this.options.values.length ) { + this.handles.each(function( i ) { + valPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100; + _set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; + $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); + if ( that.options.range === true ) { + if ( that.orientation === "horizontal" ) { + if ( i === 0 ) { + that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate ); + } + if ( i === 1 ) { + that.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + } else { + if ( i === 0 ) { + that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate ); + } + if ( i === 1 ) { + that.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + } + } + lastValPercent = valPercent; + }); + } else { + value = this.value(); + valueMin = this._valueMin(); + valueMax = this._valueMax(); + valPercent = ( valueMax !== valueMin ) ? + ( value - valueMin ) / ( valueMax - valueMin ) * 100 : + 0; + _set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; + this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); + + if ( oRange === "min" && this.orientation === "horizontal" ) { + this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate ); + } + if ( oRange === "max" && this.orientation === "horizontal" ) { + this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + if ( oRange === "min" && this.orientation === "vertical" ) { + this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate ); + } + if ( oRange === "max" && this.orientation === "vertical" ) { + this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + } + }, + + _handleEvents: { + keydown: function( event ) { + /*jshint maxcomplexity:25*/ + var allowed, curVal, newVal, step, + index = $( event.target ).data( "ui-slider-handle-index" ); + + switch ( event.keyCode ) { + case $.ui.keyCode.HOME: + case $.ui.keyCode.END: + case $.ui.keyCode.PAGE_UP: + case $.ui.keyCode.PAGE_DOWN: + case $.ui.keyCode.UP: + case $.ui.keyCode.RIGHT: + case $.ui.keyCode.DOWN: + case $.ui.keyCode.LEFT: + event.preventDefault(); + if ( !this._keySliding ) { + this._keySliding = true; + $( event.target ).addClass( "ui-state-active" ); + allowed = this._start( event, index ); + if ( allowed === false ) { + return; + } + } + break; + } + + step = this.options.step; + if ( this.options.values && this.options.values.length ) { + curVal = newVal = this.values( index ); + } else { + curVal = newVal = this.value(); + } + + switch ( event.keyCode ) { + case $.ui.keyCode.HOME: + newVal = this._valueMin(); + break; + case $.ui.keyCode.END: + newVal = this._valueMax(); + break; + case $.ui.keyCode.PAGE_UP: + newVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) ); + break; + case $.ui.keyCode.PAGE_DOWN: + newVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) ); + break; + case $.ui.keyCode.UP: + case $.ui.keyCode.RIGHT: + if ( curVal === this._valueMax() ) { + return; + } + newVal = this._trimAlignValue( curVal + step ); + break; + case $.ui.keyCode.DOWN: + case $.ui.keyCode.LEFT: + if ( curVal === this._valueMin() ) { + return; + } + newVal = this._trimAlignValue( curVal - step ); + break; + } + + this._slide( event, index, newVal ); + }, + keyup: function( event ) { + var index = $( event.target ).data( "ui-slider-handle-index" ); + + if ( this._keySliding ) { + this._keySliding = false; + this._stop( event, index ); + this._change( event, index ); + $( event.target ).removeClass( "ui-state-active" ); + } + } + } + +}); + +}(jQuery)); +(function( $ ) { + +function modifier( fn ) { + return function() { + var previous = this.element.val(); + fn.apply( this, arguments ); + this._refresh(); + if ( previous !== this.element.val() ) { + this._trigger( "change" ); + } + }; +} + +$.widget( "ui.spinner", { + version: "1.10.0", + defaultElement: "<input>", + widgetEventPrefix: "spin", + options: { + culture: null, + icons: { + down: "ui-icon-triangle-1-s", + up: "ui-icon-triangle-1-n" + }, + incremental: true, + max: null, + min: null, + numberFormat: null, + page: 10, + step: 1, + + change: null, + spin: null, + start: null, + stop: null + }, + + _create: function() { + // handle string values that need to be parsed + this._setOption( "max", this.options.max ); + this._setOption( "min", this.options.min ); + this._setOption( "step", this.options.step ); + + // format the value, but don't constrain + this._value( this.element.val(), true ); + + this._draw(); + this._on( this._events ); + this._refresh(); + + // turning off autocomplete prevents the browser from remembering the + // value when navigating through history, so we re-enable autocomplete + // if the page is unloaded before the widget is destroyed. #7790 + this._on( this.window, { + beforeunload: function() { + this.element.removeAttr( "autocomplete" ); + } + }); + }, + + _getCreateOptions: function() { + var options = {}, + element = this.element; + + $.each( [ "min", "max", "step" ], function( i, option ) { + var value = element.attr( option ); + if ( value !== undefined && value.length ) { + options[ option ] = value; + } + }); + + return options; + }, + + _events: { + keydown: function( event ) { + if ( this._start( event ) && this._keydown( event ) ) { + event.preventDefault(); + } + }, + keyup: "_stop", + focus: function() { + this.previous = this.element.val(); + }, + blur: function( event ) { + if ( this.cancelBlur ) { + delete this.cancelBlur; + return; + } + + this._refresh(); + if ( this.previous !== this.element.val() ) { + this._trigger( "change", event ); + } + }, + mousewheel: function( event, delta ) { + if ( !delta ) { + return; + } + if ( !this.spinning && !this._start( event ) ) { + return false; + } + + this._spin( (delta > 0 ? 1 : -1) * this.options.step, event ); + clearTimeout( this.mousewheelTimer ); + this.mousewheelTimer = this._delay(function() { + if ( this.spinning ) { + this._stop( event ); + } + }, 100 ); + event.preventDefault(); + }, + "mousedown .ui-spinner-button": function( event ) { + var previous; + + // We never want the buttons to have focus; whenever the user is + // interacting with the spinner, the focus should be on the input. + // If the input is focused then this.previous is properly set from + // when the input first received focus. If the input is not focused + // then we need to set this.previous based on the value before spinning. + previous = this.element[0] === this.document[0].activeElement ? + this.previous : this.element.val(); + function checkFocus() { + var isActive = this.element[0] === this.document[0].activeElement; + if ( !isActive ) { + this.element.focus(); + this.previous = previous; + // support: IE + // IE sets focus asynchronously, so we need to check if focus + // moved off of the input because the user clicked on the button. + this._delay(function() { + this.previous = previous; + }); + } + } + + // ensure focus is on (or stays on) the text field + event.preventDefault(); + checkFocus.call( this ); + + // support: IE + // IE doesn't prevent moving focus even with event.preventDefault() + // so we set a flag to know when we should ignore the blur event + // and check (again) if focus moved off of the input. + this.cancelBlur = true; + this._delay(function() { + delete this.cancelBlur; + checkFocus.call( this ); + }); + + if ( this._start( event ) === false ) { + return; + } + + this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event ); + }, + "mouseup .ui-spinner-button": "_stop", + "mouseenter .ui-spinner-button": function( event ) { + // button will add ui-state-active if mouse was down while mouseleave and kept down + if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) { + return; + } + + if ( this._start( event ) === false ) { + return false; + } + this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event ); + }, + // TODO: do we really want to consider this a stop? + // shouldn't we just stop the repeater and wait until mouseup before + // we trigger the stop event? + "mouseleave .ui-spinner-button": "_stop" + }, + + _draw: function() { + var uiSpinner = this.uiSpinner = this.element + .addClass( "ui-spinner-input" ) + .attr( "autocomplete", "off" ) + .wrap( this._uiSpinnerHtml() ) + .parent() + // add buttons + .append( this._buttonHtml() ); + + this.element.attr( "role", "spinbutton" ); + + // button bindings + this.buttons = uiSpinner.find( ".ui-spinner-button" ) + .attr( "tabIndex", -1 ) + .button() + .removeClass( "ui-corner-all" ); + + // IE 6 doesn't understand height: 50% for the buttons + // unless the wrapper has an explicit height + if ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) && + uiSpinner.height() > 0 ) { + uiSpinner.height( uiSpinner.height() ); + } + + // disable spinner if element was already disabled + if ( this.options.disabled ) { + this.disable(); + } + }, + + _keydown: function( event ) { + var options = this.options, + keyCode = $.ui.keyCode; + + switch ( event.keyCode ) { + case keyCode.UP: + this._repeat( null, 1, event ); + return true; + case keyCode.DOWN: + this._repeat( null, -1, event ); + return true; + case keyCode.PAGE_UP: + this._repeat( null, options.page, event ); + return true; + case keyCode.PAGE_DOWN: + this._repeat( null, -options.page, event ); + return true; + } + + return false; + }, + + _uiSpinnerHtml: function() { + return "<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"; + }, + + _buttonHtml: function() { + return "" + + "<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>" + + "<span class='ui-icon " + this.options.icons.up + "'>▲</span>" + + "</a>" + + "<a class='ui-spinner-button ui-spinner-down ui-corner-br'>" + + "<span class='ui-icon " + this.options.icons.down + "'>▼</span>" + + "</a>"; + }, + + _start: function( event ) { + if ( !this.spinning && this._trigger( "start", event ) === false ) { + return false; + } + + if ( !this.counter ) { + this.counter = 1; + } + this.spinning = true; + return true; + }, + + _repeat: function( i, steps, event ) { + i = i || 500; + + clearTimeout( this.timer ); + this.timer = this._delay(function() { + this._repeat( 40, steps, event ); + }, i ); + + this._spin( steps * this.options.step, event ); + }, + + _spin: function( step, event ) { + var value = this.value() || 0; + + if ( !this.counter ) { + this.counter = 1; + } + + value = this._adjustValue( value + step * this._increment( this.counter ) ); + + if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false) { + this._value( value ); + this.counter++; + } + }, + + _increment: function( i ) { + var incremental = this.options.incremental; + + if ( incremental ) { + return $.isFunction( incremental ) ? + incremental( i ) : + Math.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 ); + } + + return 1; + }, + + _precision: function() { + var precision = this._precisionOf( this.options.step ); + if ( this.options.min !== null ) { + precision = Math.max( precision, this._precisionOf( this.options.min ) ); + } + return precision; + }, + + _precisionOf: function( num ) { + var str = num.toString(), + decimal = str.indexOf( "." ); + return decimal === -1 ? 0 : str.length - decimal - 1; + }, + + _adjustValue: function( value ) { + var base, aboveMin, + options = this.options; + + // make sure we're at a valid step + // - find out where we are relative to the base (min or 0) + base = options.min !== null ? options.min : 0; + aboveMin = value - base; + // - round to the nearest step + aboveMin = Math.round(aboveMin / options.step) * options.step; + // - rounding is based on 0, so adjust back to our base + value = base + aboveMin; + + // fix precision from bad JS floating point math + value = parseFloat( value.toFixed( this._precision() ) ); + + // clamp the value + if ( options.max !== null && value > options.max) { + return options.max; + } + if ( options.min !== null && value < options.min ) { + return options.min; + } + + return value; + }, + + _stop: function( event ) { + if ( !this.spinning ) { + return; + } + + clearTimeout( this.timer ); + clearTimeout( this.mousewheelTimer ); + this.counter = 0; + this.spinning = false; + this._trigger( "stop", event ); + }, + + _setOption: function( key, value ) { + if ( key === "culture" || key === "numberFormat" ) { + var prevValue = this._parse( this.element.val() ); + this.options[ key ] = value; + this.element.val( this._format( prevValue ) ); + return; + } + + if ( key === "max" || key === "min" || key === "step" ) { + if ( typeof value === "string" ) { + value = this._parse( value ); + } + } + if ( key === "icons" ) { + this.buttons.first().find( ".ui-icon" ) + .removeClass( this.options.icons.up ) + .addClass( value.up ); + this.buttons.last().find( ".ui-icon" ) + .removeClass( this.options.icons.down ) + .addClass( value.down ); + } + + this._super( key, value ); + + if ( key === "disabled" ) { + if ( value ) { + this.element.prop( "disabled", true ); + this.buttons.button( "disable" ); + } else { + this.element.prop( "disabled", false ); + this.buttons.button( "enable" ); + } + } + }, + + _setOptions: modifier(function( options ) { + this._super( options ); + this._value( this.element.val() ); + }), + + _parse: function( val ) { + if ( typeof val === "string" && val !== "" ) { + val = window.Globalize && this.options.numberFormat ? + Globalize.parseFloat( val, 10, this.options.culture ) : +val; + } + return val === "" || isNaN( val ) ? null : val; + }, + + _format: function( value ) { + if ( value === "" ) { + return ""; + } + return window.Globalize && this.options.numberFormat ? + Globalize.format( value, this.options.numberFormat, this.options.culture ) : + value; + }, + + _refresh: function() { + this.element.attr({ + "aria-valuemin": this.options.min, + "aria-valuemax": this.options.max, + // TODO: what should we do with values that can't be parsed? + "aria-valuenow": this._parse( this.element.val() ) + }); + }, + + // update the value without triggering change + _value: function( value, allowAny ) { + var parsed; + if ( value !== "" ) { + parsed = this._parse( value ); + if ( parsed !== null ) { + if ( !allowAny ) { + parsed = this._adjustValue( parsed ); + } + value = this._format( parsed ); + } + } + this.element.val( value ); + this._refresh(); + }, + + _destroy: function() { + this.element + .removeClass( "ui-spinner-input" ) + .prop( "disabled", false ) + .removeAttr( "autocomplete" ) + .removeAttr( "role" ) + .removeAttr( "aria-valuemin" ) + .removeAttr( "aria-valuemax" ) + .removeAttr( "aria-valuenow" ); + this.uiSpinner.replaceWith( this.element ); + }, + + stepUp: modifier(function( steps ) { + this._stepUp( steps ); + }), + _stepUp: function( steps ) { + if ( this._start() ) { + this._spin( (steps || 1) * this.options.step ); + this._stop(); + } + }, + + stepDown: modifier(function( steps ) { + this._stepDown( steps ); + }), + _stepDown: function( steps ) { + if ( this._start() ) { + this._spin( (steps || 1) * -this.options.step ); + this._stop(); + } + }, + + pageUp: modifier(function( pages ) { + this._stepUp( (pages || 1) * this.options.page ); + }), + + pageDown: modifier(function( pages ) { + this._stepDown( (pages || 1) * this.options.page ); + }), + + value: function( newVal ) { + if ( !arguments.length ) { + return this._parse( this.element.val() ); + } + modifier( this._value ).call( this, newVal ); + }, + + widget: function() { + return this.uiSpinner; + } +}); + +}( jQuery ) ); +(function( $, undefined ) { + +var tabId = 0, + rhash = /#.*$/; + +function getNextTabId() { + return ++tabId; +} + +function isLocal( anchor ) { + return anchor.hash.length > 1 && + decodeURIComponent( anchor.href.replace( rhash, "" ) ) === + decodeURIComponent( location.href.replace( rhash, "" ) ); +} + +$.widget( "ui.tabs", { + version: "1.10.0", + delay: 300, + options: { + active: null, + collapsible: false, + event: "click", + heightStyle: "content", + hide: null, + show: null, + + // callbacks + activate: null, + beforeActivate: null, + beforeLoad: null, + load: null + }, + + _create: function() { + var that = this, + options = this.options; + + this.running = false; + + this.element + .addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" ) + .toggleClass( "ui-tabs-collapsible", options.collapsible ) + // Prevent users from focusing disabled tabs via click + .delegate( ".ui-tabs-nav > li", "mousedown" + this.eventNamespace, function( event ) { + if ( $( this ).is( ".ui-state-disabled" ) ) { + event.preventDefault(); + } + }) + // support: IE <9 + // Preventing the default action in mousedown doesn't prevent IE + // from focusing the element, so if the anchor gets focused, blur. + // We don't have to worry about focusing the previously focused + // element since clicking on a non-focusable element should focus + // the body anyway. + .delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() { + if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) { + this.blur(); + } + }); + + this._processTabs(); + options.active = this._initialActive(); + + // Take disabling tabs via class attribute from HTML + // into account and update option properly. + if ( $.isArray( options.disabled ) ) { + options.disabled = $.unique( options.disabled.concat( + $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) { + return that.tabs.index( li ); + }) + ) ).sort(); + } + + // check for length avoids error when initializing empty list + if ( this.options.active !== false && this.anchors.length ) { + this.active = this._findActive( options.active ); + } else { + this.active = $(); + } + + this._refresh(); + + if ( this.active.length ) { + this.load( options.active ); + } + }, + + _initialActive: function() { + var active = this.options.active, + collapsible = this.options.collapsible, + locationHash = location.hash.substring( 1 ); + + if ( active === null ) { + // check the fragment identifier in the URL + if ( locationHash ) { + this.tabs.each(function( i, tab ) { + if ( $( tab ).attr( "aria-controls" ) === locationHash ) { + active = i; + return false; + } + }); + } + + // check for a tab marked active via a class + if ( active === null ) { + active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) ); + } + + // no active tab, set to false + if ( active === null || active === -1 ) { + active = this.tabs.length ? 0 : false; + } + } + + // handle numbers: negative, out of range + if ( active !== false ) { + active = this.tabs.index( this.tabs.eq( active ) ); + if ( active === -1 ) { + active = collapsible ? false : 0; + } + } + + // don't allow collapsible: false and active: false + if ( !collapsible && active === false && this.anchors.length ) { + active = 0; + } + + return active; + }, + + _getCreateEventData: function() { + return { + tab: this.active, + panel: !this.active.length ? $() : this._getPanelForTab( this.active ) + }; + }, + + _tabKeydown: function( event ) { + /*jshint maxcomplexity:15*/ + var focusedTab = $( this.document[0].activeElement ).closest( "li" ), + selectedIndex = this.tabs.index( focusedTab ), + goingForward = true; + + if ( this._handlePageNav( event ) ) { + return; + } + + switch ( event.keyCode ) { + case $.ui.keyCode.RIGHT: + case $.ui.keyCode.DOWN: + selectedIndex++; + break; + case $.ui.keyCode.UP: + case $.ui.keyCode.LEFT: + goingForward = false; + selectedIndex--; + break; + case $.ui.keyCode.END: + selectedIndex = this.anchors.length - 1; + break; + case $.ui.keyCode.HOME: + selectedIndex = 0; + break; + case $.ui.keyCode.SPACE: + // Activate only, no collapsing + event.preventDefault(); + clearTimeout( this.activating ); + this._activate( selectedIndex ); + return; + case $.ui.keyCode.ENTER: + // Toggle (cancel delayed activation, allow collapsing) + event.preventDefault(); + clearTimeout( this.activating ); + // Determine if we should collapse or activate + this._activate( selectedIndex === this.options.active ? false : selectedIndex ); + return; + default: + return; + } + + // Focus the appropriate tab, based on which key was pressed + event.preventDefault(); + clearTimeout( this.activating ); + selectedIndex = this._focusNextTab( selectedIndex, goingForward ); + + // Navigating with control key will prevent automatic activation + if ( !event.ctrlKey ) { + // Update aria-selected immediately so that AT think the tab is already selected. + // Otherwise AT may confuse the user by stating that they need to activate the tab, + // but the tab will already be activated by the time the announcement finishes. + focusedTab.attr( "aria-selected", "false" ); + this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" ); + + this.activating = this._delay(function() { + this.option( "active", selectedIndex ); + }, this.delay ); + } + }, + + _panelKeydown: function( event ) { + if ( this._handlePageNav( event ) ) { + return; + } + + // Ctrl+up moves focus to the current tab + if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) { + event.preventDefault(); + this.active.focus(); + } + }, + + // Alt+page up/down moves focus to the previous/next tab (and activates) + _handlePageNav: function( event ) { + if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) { + this._activate( this._focusNextTab( this.options.active - 1, false ) ); + return true; + } + if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) { + this._activate( this._focusNextTab( this.options.active + 1, true ) ); + return true; + } + }, + + _findNextTab: function( index, goingForward ) { + var lastTabIndex = this.tabs.length - 1; + + function constrain() { + if ( index > lastTabIndex ) { + index = 0; + } + if ( index < 0 ) { + index = lastTabIndex; + } + return index; + } + + while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) { + index = goingForward ? index + 1 : index - 1; + } + + return index; + }, + + _focusNextTab: function( index, goingForward ) { + index = this._findNextTab( index, goingForward ); + this.tabs.eq( index ).focus(); + return index; + }, + + _setOption: function( key, value ) { + if ( key === "active" ) { + // _activate() will handle invalid values and update this.options + this._activate( value ); + return; + } + + if ( key === "disabled" ) { + // don't use the widget factory's disabled handling + this._setupDisabled( value ); + return; + } + + this._super( key, value); + + if ( key === "collapsible" ) { + this.element.toggleClass( "ui-tabs-collapsible", value ); + // Setting collapsible: false while collapsed; open first panel + if ( !value && this.options.active === false ) { + this._activate( 0 ); + } + } + + if ( key === "event" ) { + this._setupEvents( value ); + } + + if ( key === "heightStyle" ) { + this._setupHeightStyle( value ); + } + }, + + _tabId: function( tab ) { + return tab.attr( "aria-controls" ) || "ui-tabs-" + getNextTabId(); + }, + + _sanitizeSelector: function( hash ) { + return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : ""; + }, + + refresh: function() { + var options = this.options, + lis = this.tablist.children( ":has(a[href])" ); + + // get disabled tabs from class attribute from HTML + // this will get converted to a boolean if needed in _refresh() + options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) { + return lis.index( tab ); + }); + + this._processTabs(); + + // was collapsed or no tabs + if ( options.active === false || !this.anchors.length ) { + options.active = false; + this.active = $(); + // was active, but active tab is gone + } else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) { + // all remaining tabs are disabled + if ( this.tabs.length === options.disabled.length ) { + options.active = false; + this.active = $(); + // activate previous tab + } else { + this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) ); + } + // was active, active tab still exists + } else { + // make sure active index is correct + options.active = this.tabs.index( this.active ); + } + + this._refresh(); + }, + + _refresh: function() { + this._setupDisabled( this.options.disabled ); + this._setupEvents( this.options.event ); + this._setupHeightStyle( this.options.heightStyle ); + + this.tabs.not( this.active ).attr({ + "aria-selected": "false", + tabIndex: -1 + }); + this.panels.not( this._getPanelForTab( this.active ) ) + .hide() + .attr({ + "aria-expanded": "false", + "aria-hidden": "true" + }); + + // Make sure one tab is in the tab order + if ( !this.active.length ) { + this.tabs.eq( 0 ).attr( "tabIndex", 0 ); + } else { + this.active + .addClass( "ui-tabs-active ui-state-active" ) + .attr({ + "aria-selected": "true", + tabIndex: 0 + }); + this._getPanelForTab( this.active ) + .show() + .attr({ + "aria-expanded": "true", + "aria-hidden": "false" + }); + } + }, + + _processTabs: function() { + var that = this; + + this.tablist = this._getList() + .addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ) + .attr( "role", "tablist" ); + + this.tabs = this.tablist.find( "> li:has(a[href])" ) + .addClass( "ui-state-default ui-corner-top" ) + .attr({ + role: "tab", + tabIndex: -1 + }); + + this.anchors = this.tabs.map(function() { + return $( "a", this )[ 0 ]; + }) + .addClass( "ui-tabs-anchor" ) + .attr({ + role: "presentation", + tabIndex: -1 + }); + + this.panels = $(); + + this.anchors.each(function( i, anchor ) { + var selector, panel, panelId, + anchorId = $( anchor ).uniqueId().attr( "id" ), + tab = $( anchor ).closest( "li" ), + originalAriaControls = tab.attr( "aria-controls" ); + + // inline tab + if ( isLocal( anchor ) ) { + selector = anchor.hash; + panel = that.element.find( that._sanitizeSelector( selector ) ); + // remote tab + } else { + panelId = that._tabId( tab ); + selector = "#" + panelId; + panel = that.element.find( selector ); + if ( !panel.length ) { + panel = that._createPanel( panelId ); + panel.insertAfter( that.panels[ i - 1 ] || that.tablist ); + } + panel.attr( "aria-live", "polite" ); + } + + if ( panel.length) { + that.panels = that.panels.add( panel ); + } + if ( originalAriaControls ) { + tab.data( "ui-tabs-aria-controls", originalAriaControls ); + } + tab.attr({ + "aria-controls": selector.substring( 1 ), + "aria-labelledby": anchorId + }); + panel.attr( "aria-labelledby", anchorId ); + }); + + this.panels + .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) + .attr( "role", "tabpanel" ); + }, + + // allow overriding how to find the list for rare usage scenarios (#7715) + _getList: function() { + return this.element.find( "ol,ul" ).eq( 0 ); + }, + + _createPanel: function( id ) { + return $( "<div>" ) + .attr( "id", id ) + .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) + .data( "ui-tabs-destroy", true ); + }, + + _setupDisabled: function( disabled ) { + if ( $.isArray( disabled ) ) { + if ( !disabled.length ) { + disabled = false; + } else if ( disabled.length === this.anchors.length ) { + disabled = true; + } + } + + // disable tabs + for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) { + if ( disabled === true || $.inArray( i, disabled ) !== -1 ) { + $( li ) + .addClass( "ui-state-disabled" ) + .attr( "aria-disabled", "true" ); + } else { + $( li ) + .removeClass( "ui-state-disabled" ) + .removeAttr( "aria-disabled" ); + } + } + + this.options.disabled = disabled; + }, + + _setupEvents: function( event ) { + var events = { + click: function( event ) { + event.preventDefault(); + } + }; + if ( event ) { + $.each( event.split(" "), function( index, eventName ) { + events[ eventName ] = "_eventHandler"; + }); + } + + this._off( this.anchors.add( this.tabs ).add( this.panels ) ); + this._on( this.anchors, events ); + this._on( this.tabs, { keydown: "_tabKeydown" } ); + this._on( this.panels, { keydown: "_panelKeydown" } ); + + this._focusable( this.tabs ); + this._hoverable( this.tabs ); + }, + + _setupHeightStyle: function( heightStyle ) { + var maxHeight, + parent = this.element.parent(); + + if ( heightStyle === "fill" ) { + maxHeight = parent.height(); + maxHeight -= this.element.outerHeight() - this.element.height(); + + this.element.siblings( ":visible" ).each(function() { + var elem = $( this ), + position = elem.css( "position" ); + + if ( position === "absolute" || position === "fixed" ) { + return; + } + maxHeight -= elem.outerHeight( true ); + }); + + this.element.children().not( this.panels ).each(function() { + maxHeight -= $( this ).outerHeight( true ); + }); + + this.panels.each(function() { + $( this ).height( Math.max( 0, maxHeight - + $( this ).innerHeight() + $( this ).height() ) ); + }) + .css( "overflow", "auto" ); + } else if ( heightStyle === "auto" ) { + maxHeight = 0; + this.panels.each(function() { + maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() ); + }).height( maxHeight ); + } + }, + + _eventHandler: function( event ) { + var options = this.options, + active = this.active, + anchor = $( event.currentTarget ), + tab = anchor.closest( "li" ), + clickedIsActive = tab[ 0 ] === active[ 0 ], + collapsing = clickedIsActive && options.collapsible, + toShow = collapsing ? $() : this._getPanelForTab( tab ), + toHide = !active.length ? $() : this._getPanelForTab( active ), + eventData = { + oldTab: active, + oldPanel: toHide, + newTab: collapsing ? $() : tab, + newPanel: toShow + }; + + event.preventDefault(); + + if ( tab.hasClass( "ui-state-disabled" ) || + // tab is already loading + tab.hasClass( "ui-tabs-loading" ) || + // can't switch durning an animation + this.running || + // click on active header, but not collapsible + ( clickedIsActive && !options.collapsible ) || + // allow canceling activation + ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { + return; + } + + options.active = collapsing ? false : this.tabs.index( tab ); + + this.active = clickedIsActive ? $() : tab; + if ( this.xhr ) { + this.xhr.abort(); + } + + if ( !toHide.length && !toShow.length ) { + $.error( "jQuery UI Tabs: Mismatching fragment identifier." ); + } + + if ( toShow.length ) { + this.load( this.tabs.index( tab ), event ); + } + this._toggle( event, eventData ); + }, + + // handles show/hide for selecting tabs + _toggle: function( event, eventData ) { + var that = this, + toShow = eventData.newPanel, + toHide = eventData.oldPanel; + + this.running = true; + + function complete() { + that.running = false; + that._trigger( "activate", event, eventData ); + } + + function show() { + eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" ); + + if ( toShow.length && that.options.show ) { + that._show( toShow, that.options.show, complete ); + } else { + toShow.show(); + complete(); + } + } + + // start out by hiding, then showing, then completing + if ( toHide.length && this.options.hide ) { + this._hide( toHide, this.options.hide, function() { + eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); + show(); + }); + } else { + eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); + toHide.hide(); + show(); + } + + toHide.attr({ + "aria-expanded": "false", + "aria-hidden": "true" + }); + eventData.oldTab.attr( "aria-selected", "false" ); + // If we're switching tabs, remove the old tab from the tab order. + // If we're opening from collapsed state, remove the previous tab from the tab order. + // If we're collapsing, then keep the collapsing tab in the tab order. + if ( toShow.length && toHide.length ) { + eventData.oldTab.attr( "tabIndex", -1 ); + } else if ( toShow.length ) { + this.tabs.filter(function() { + return $( this ).attr( "tabIndex" ) === 0; + }) + .attr( "tabIndex", -1 ); + } + + toShow.attr({ + "aria-expanded": "true", + "aria-hidden": "false" + }); + eventData.newTab.attr({ + "aria-selected": "true", + tabIndex: 0 + }); + }, + + _activate: function( index ) { + var anchor, + active = this._findActive( index ); + + // trying to activate the already active panel + if ( active[ 0 ] === this.active[ 0 ] ) { + return; + } + + // trying to collapse, simulate a click on the current active header + if ( !active.length ) { + active = this.active; + } + + anchor = active.find( ".ui-tabs-anchor" )[ 0 ]; + this._eventHandler({ + target: anchor, + currentTarget: anchor, + preventDefault: $.noop + }); + }, + + _findActive: function( index ) { + return index === false ? $() : this.tabs.eq( index ); + }, + + _getIndex: function( index ) { + // meta-function to give users option to provide a href string instead of a numerical index. + if ( typeof index === "string" ) { + index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) ); + } + + return index; + }, + + _destroy: function() { + if ( this.xhr ) { + this.xhr.abort(); + } + + this.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" ); + + this.tablist + .removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ) + .removeAttr( "role" ); + + this.anchors + .removeClass( "ui-tabs-anchor" ) + .removeAttr( "role" ) + .removeAttr( "tabIndex" ) + .removeUniqueId(); + + this.tabs.add( this.panels ).each(function() { + if ( $.data( this, "ui-tabs-destroy" ) ) { + $( this ).remove(); + } else { + $( this ) + .removeClass( "ui-state-default ui-state-active ui-state-disabled " + + "ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel" ) + .removeAttr( "tabIndex" ) + .removeAttr( "aria-live" ) + .removeAttr( "aria-busy" ) + .removeAttr( "aria-selected" ) + .removeAttr( "aria-labelledby" ) + .removeAttr( "aria-hidden" ) + .removeAttr( "aria-expanded" ) + .removeAttr( "role" ); + } + }); + + this.tabs.each(function() { + var li = $( this ), + prev = li.data( "ui-tabs-aria-controls" ); + if ( prev ) { + li + .attr( "aria-controls", prev ) + .removeData( "ui-tabs-aria-controls" ); + } else { + li.removeAttr( "aria-controls" ); + } + }); + + this.panels.show(); + + if ( this.options.heightStyle !== "content" ) { + this.panels.css( "height", "" ); + } + }, + + enable: function( index ) { + var disabled = this.options.disabled; + if ( disabled === false ) { + return; + } + + if ( index === undefined ) { + disabled = false; + } else { + index = this._getIndex( index ); + if ( $.isArray( disabled ) ) { + disabled = $.map( disabled, function( num ) { + return num !== index ? num : null; + }); + } else { + disabled = $.map( this.tabs, function( li, num ) { + return num !== index ? num : null; + }); + } + } + this._setupDisabled( disabled ); + }, + + disable: function( index ) { + var disabled = this.options.disabled; + if ( disabled === true ) { + return; + } + + if ( index === undefined ) { + disabled = true; + } else { + index = this._getIndex( index ); + if ( $.inArray( index, disabled ) !== -1 ) { + return; + } + if ( $.isArray( disabled ) ) { + disabled = $.merge( [ index ], disabled ).sort(); + } else { + disabled = [ index ]; + } + } + this._setupDisabled( disabled ); + }, + + load: function( index, event ) { + index = this._getIndex( index ); + var that = this, + tab = this.tabs.eq( index ), + anchor = tab.find( ".ui-tabs-anchor" ), + panel = this._getPanelForTab( tab ), + eventData = { + tab: tab, + panel: panel + }; + + // not remote + if ( isLocal( anchor[ 0 ] ) ) { + return; + } + + this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) ); + + // support: jQuery <1.8 + // jQuery <1.8 returns false if the request is canceled in beforeSend, + // but as of 1.8, $.ajax() always returns a jqXHR object. + if ( this.xhr && this.xhr.statusText !== "canceled" ) { + tab.addClass( "ui-tabs-loading" ); + panel.attr( "aria-busy", "true" ); + + this.xhr + .success(function( response ) { + // support: jQuery <1.8 + // http://bugs.jquery.com/ticket/11778 + setTimeout(function() { + panel.html( response ); + that._trigger( "load", event, eventData ); + }, 1 ); + }) + .complete(function( jqXHR, status ) { + // support: jQuery <1.8 + // http://bugs.jquery.com/ticket/11778 + setTimeout(function() { + if ( status === "abort" ) { + that.panels.stop( false, true ); + } + + tab.removeClass( "ui-tabs-loading" ); + panel.removeAttr( "aria-busy" ); + + if ( jqXHR === that.xhr ) { + delete that.xhr; + } + }, 1 ); + }); + } + }, + + _ajaxSettings: function( anchor, event, eventData ) { + var that = this; + return { + url: anchor.attr( "href" ), + beforeSend: function( jqXHR, settings ) { + return that._trigger( "beforeLoad", event, + $.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) ); + } + }; + }, + + _getPanelForTab: function( tab ) { + var id = $( tab ).attr( "aria-controls" ); + return this.element.find( this._sanitizeSelector( "#" + id ) ); + } +}); + +})( jQuery ); +(function( $ ) { + +var increments = 0; + +function addDescribedBy( elem, id ) { + var describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ); + describedby.push( id ); + elem + .data( "ui-tooltip-id", id ) + .attr( "aria-describedby", $.trim( describedby.join( " " ) ) ); +} + +function removeDescribedBy( elem ) { + var id = elem.data( "ui-tooltip-id" ), + describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ), + index = $.inArray( id, describedby ); + if ( index !== -1 ) { + describedby.splice( index, 1 ); + } + + elem.removeData( "ui-tooltip-id" ); + describedby = $.trim( describedby.join( " " ) ); + if ( describedby ) { + elem.attr( "aria-describedby", describedby ); + } else { + elem.removeAttr( "aria-describedby" ); + } +} + +$.widget( "ui.tooltip", { + version: "1.10.0", + options: { + content: function() { + // support: IE<9, Opera in jQuery <1.7 + // .text() can't accept undefined, so coerce to a string + var title = $( this ).attr( "title" ) || ""; + // Escape title, since we're going from an attribute to raw HTML + return $( "<a>" ).text( title ).html(); + }, + hide: true, + // Disabled elements have inconsistent behavior across browsers (#8661) + items: "[title]:not([disabled])", + position: { + my: "left top+15", + at: "left bottom", + collision: "flipfit flip" + }, + show: true, + tooltipClass: null, + track: false, + + // callbacks + close: null, + open: null + }, + + _create: function() { + this._on({ + mouseover: "open", + focusin: "open" + }); + + // IDs of generated tooltips, needed for destroy + this.tooltips = {}; + // IDs of parent tooltips where we removed the title attribute + this.parents = {}; + + if ( this.options.disabled ) { + this._disable(); + } + }, + + _setOption: function( key, value ) { + var that = this; + + if ( key === "disabled" ) { + this[ value ? "_disable" : "_enable" ](); + this.options[ key ] = value; + // disable element style changes + return; + } + + this._super( key, value ); + + if ( key === "content" ) { + $.each( this.tooltips, function( id, element ) { + that._updateContent( element ); + }); + } + }, + + _disable: function() { + var that = this; + + // close open tooltips + $.each( this.tooltips, function( id, element ) { + var event = $.Event( "blur" ); + event.target = event.currentTarget = element[0]; + that.close( event, true ); + }); + + // remove title attributes to prevent native tooltips + this.element.find( this.options.items ).addBack().each(function() { + var element = $( this ); + if ( element.is( "[title]" ) ) { + element + .data( "ui-tooltip-title", element.attr( "title" ) ) + .attr( "title", "" ); + } + }); + }, + + _enable: function() { + // restore title attributes + this.element.find( this.options.items ).addBack().each(function() { + var element = $( this ); + if ( element.data( "ui-tooltip-title" ) ) { + element.attr( "title", element.data( "ui-tooltip-title" ) ); + } + }); + }, + + open: function( event ) { + var that = this, + target = $( event ? event.target : this.element ) + // we need closest here due to mouseover bubbling, + // but always pointing at the same event target + .closest( this.options.items ); + + // No element to show a tooltip for or the tooltip is already open + if ( !target.length || target.data( "ui-tooltip-id" ) ) { + return; + } + + if ( target.attr( "title" ) ) { + target.data( "ui-tooltip-title", target.attr( "title" ) ); + } + + target.data( "ui-tooltip-open", true ); + + // kill parent tooltips, custom or native, for hover + if ( event && event.type === "mouseover" ) { + target.parents().each(function() { + var parent = $( this ), + blurEvent; + if ( parent.data( "ui-tooltip-open" ) ) { + blurEvent = $.Event( "blur" ); + blurEvent.target = blurEvent.currentTarget = this; + that.close( blurEvent, true ); + } + if ( parent.attr( "title" ) ) { + parent.uniqueId(); + that.parents[ this.id ] = { + element: this, + title: parent.attr( "title" ) + }; + parent.attr( "title", "" ); + } + }); + } + + this._updateContent( target, event ); + }, + + _updateContent: function( target, event ) { + var content, + contentOption = this.options.content, + that = this, + eventType = event ? event.type : null; + + if ( typeof contentOption === "string" ) { + return this._open( event, target, contentOption ); + } + + content = contentOption.call( target[0], function( response ) { + // ignore async response if tooltip was closed already + if ( !target.data( "ui-tooltip-open" ) ) { + return; + } + // IE may instantly serve a cached response for ajax requests + // delay this call to _open so the other call to _open runs first + that._delay(function() { + // jQuery creates a special event for focusin when it doesn't + // exist natively. To improve performance, the native event + // object is reused and the type is changed. Therefore, we can't + // rely on the type being correct after the event finished + // bubbling, so we set it back to the previous value. (#8740) + if ( event ) { + event.type = eventType; + } + this._open( event, target, response ); + }); + }); + if ( content ) { + this._open( event, target, content ); + } + }, + + _open: function( event, target, content ) { + var tooltip, events, delayedShow, + positionOption = $.extend( {}, this.options.position ); + + if ( !content ) { + return; + } + + // Content can be updated multiple times. If the tooltip already + // exists, then just update the content and bail. + tooltip = this._find( target ); + if ( tooltip.length ) { + tooltip.find( ".ui-tooltip-content" ).html( content ); + return; + } + + // if we have a title, clear it to prevent the native tooltip + // we have to check first to avoid defining a title if none exists + // (we don't want to cause an element to start matching [title]) + // + // We use removeAttr only for key events, to allow IE to export the correct + // accessible attributes. For mouse events, set to empty string to avoid + // native tooltip showing up (happens only when removing inside mouseover). + if ( target.is( "[title]" ) ) { + if ( event && event.type === "mouseover" ) { + target.attr( "title", "" ); + } else { + target.removeAttr( "title" ); + } + } + + tooltip = this._tooltip( target ); + addDescribedBy( target, tooltip.attr( "id" ) ); + tooltip.find( ".ui-tooltip-content" ).html( content ); + + function position( event ) { + positionOption.of = event; + if ( tooltip.is( ":hidden" ) ) { + return; + } + tooltip.position( positionOption ); + } + if ( this.options.track && event && /^mouse/.test( event.type ) ) { + this._on( this.document, { + mousemove: position + }); + // trigger once to override element-relative positioning + position( event ); + } else { + tooltip.position( $.extend({ + of: target + }, this.options.position ) ); + } + + tooltip.hide(); + + this._show( tooltip, this.options.show ); + // Handle tracking tooltips that are shown with a delay (#8644). As soon + // as the tooltip is visible, position the tooltip using the most recent + // event. + if ( this.options.show && this.options.show.delay ) { + delayedShow = this.delayedShow = setInterval(function() { + if ( tooltip.is( ":visible" ) ) { + position( positionOption.of ); + clearInterval( delayedShow ); + } + }, $.fx.interval ); + } + + this._trigger( "open", event, { tooltip: tooltip } ); + + events = { + keyup: function( event ) { + if ( event.keyCode === $.ui.keyCode.ESCAPE ) { + var fakeEvent = $.Event(event); + fakeEvent.currentTarget = target[0]; + this.close( fakeEvent, true ); + } + }, + remove: function() { + this._removeTooltip( tooltip ); + } + }; + if ( !event || event.type === "mouseover" ) { + events.mouseleave = "close"; + } + if ( !event || event.type === "focusin" ) { + events.focusout = "close"; + } + this._on( true, target, events ); + }, + + close: function( event ) { + var that = this, + target = $( event ? event.currentTarget : this.element ), + tooltip = this._find( target ); + + // disabling closes the tooltip, so we need to track when we're closing + // to avoid an infinite loop in case the tooltip becomes disabled on close + if ( this.closing ) { + return; + } + + // Clear the interval for delayed tracking tooltips + clearInterval( this.delayedShow ); + + // only set title if we had one before (see comment in _open()) + if ( target.data( "ui-tooltip-title" ) ) { + target.attr( "title", target.data( "ui-tooltip-title" ) ); + } + + removeDescribedBy( target ); + + tooltip.stop( true ); + this._hide( tooltip, this.options.hide, function() { + that._removeTooltip( $( this ) ); + }); + + target.removeData( "ui-tooltip-open" ); + this._off( target, "mouseleave focusout keyup" ); + // Remove 'remove' binding only on delegated targets + if ( target[0] !== this.element[0] ) { + this._off( target, "remove" ); + } + this._off( this.document, "mousemove" ); + + if ( event && event.type === "mouseleave" ) { + $.each( this.parents, function( id, parent ) { + $( parent.element ).attr( "title", parent.title ); + delete that.parents[ id ]; + }); + } + + this.closing = true; + this._trigger( "close", event, { tooltip: tooltip } ); + this.closing = false; + }, + + _tooltip: function( element ) { + var id = "ui-tooltip-" + increments++, + tooltip = $( "<div>" ) + .attr({ + id: id, + role: "tooltip" + }) + .addClass( "ui-tooltip ui-widget ui-corner-all ui-widget-content " + + ( this.options.tooltipClass || "" ) ); + $( "<div>" ) + .addClass( "ui-tooltip-content" ) + .appendTo( tooltip ); + tooltip.appendTo( this.document[0].body ); + this.tooltips[ id ] = element; + return tooltip; + }, + + _find: function( target ) { + var id = target.data( "ui-tooltip-id" ); + return id ? $( "#" + id ) : $(); + }, + + _removeTooltip: function( tooltip ) { + tooltip.remove(); + delete this.tooltips[ tooltip.attr( "id" ) ]; + }, + + _destroy: function() { + var that = this; + + // close open tooltips + $.each( this.tooltips, function( id, element ) { + // Delegate to close method to handle common cleanup + var event = $.Event( "blur" ); + event.target = event.currentTarget = element[0]; + that.close( event, true ); + + // Remove immediately; destroying an open tooltip doesn't use the + // hide animation + $( "#" + id ).remove(); + + // Restore the title + if ( element.data( "ui-tooltip-title" ) ) { + element.attr( "title", element.data( "ui-tooltip-title" ) ); + element.removeData( "ui-tooltip-title" ); + } + }); + } +}); + +}( jQuery ) ); +;(jQuery.effects || (function($, undefined) { + +var dataSpace = "ui-effects-"; + +$.effects = { + effect: {} +}; + +/*! + * jQuery Color Animations v2.1.2 + * https://github.com/jquery/jquery-color + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * Date: Wed Jan 16 08:47:09 2013 -0600 + */ +(function( jQuery, undefined ) { + + var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", + + // plusequals test for += 100 -= 100 + rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, + // a set of RE's that can match strings and generate color tuples. + stringParsers = [{ + re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ], + execResult[ 3 ], + execResult[ 4 ] + ]; + } + }, { + re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ] * 2.55, + execResult[ 2 ] * 2.55, + execResult[ 3 ] * 2.55, + execResult[ 4 ] + ]; + } + }, { + // this regex ignores A-F because it's compared against an already lowercased string + re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ], 16 ) + ]; + } + }, { + // this regex ignores A-F because it's compared against an already lowercased string + re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) + ]; + } + }, { + re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + space: "hsla", + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ] / 100, + execResult[ 3 ] / 100, + execResult[ 4 ] + ]; + } + }], + + // jQuery.Color( ) + color = jQuery.Color = function( color, green, blue, alpha ) { + return new jQuery.Color.fn.parse( color, green, blue, alpha ); + }, + spaces = { + rgba: { + props: { + red: { + idx: 0, + type: "byte" + }, + green: { + idx: 1, + type: "byte" + }, + blue: { + idx: 2, + type: "byte" + } + } + }, + + hsla: { + props: { + hue: { + idx: 0, + type: "degrees" + }, + saturation: { + idx: 1, + type: "percent" + }, + lightness: { + idx: 2, + type: "percent" + } + } + } + }, + propTypes = { + "byte": { + floor: true, + max: 255 + }, + "percent": { + max: 1 + }, + "degrees": { + mod: 360, + floor: true + } + }, + support = color.support = {}, + + // element for support tests + supportElem = jQuery( "<p>" )[ 0 ], + + // colors = jQuery.Color.names + colors, + + // local aliases of functions called often + each = jQuery.each; + +// determine rgba support immediately +supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; +support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; + +// define cache name and alpha properties +// for rgba and hsla spaces +each( spaces, function( spaceName, space ) { + space.cache = "_" + spaceName; + space.props.alpha = { + idx: 3, + type: "percent", + def: 1 + }; +}); + +function clamp( value, prop, allowEmpty ) { + var type = propTypes[ prop.type ] || {}; + + if ( value == null ) { + return (allowEmpty || !prop.def) ? null : prop.def; + } + + // ~~ is an short way of doing floor for positive numbers + value = type.floor ? ~~value : parseFloat( value ); + + // IE will pass in empty strings as value for alpha, + // which will hit this case + if ( isNaN( value ) ) { + return prop.def; + } + + if ( type.mod ) { + // we add mod before modding to make sure that negatives values + // get converted properly: -10 -> 350 + return (value + type.mod) % type.mod; + } + + // for now all property types without mod have min and max + return 0 > value ? 0 : type.max < value ? type.max : value; +} + +function stringParse( string ) { + var inst = color(), + rgba = inst._rgba = []; + + string = string.toLowerCase(); + + each( stringParsers, function( i, parser ) { + var parsed, + match = parser.re.exec( string ), + values = match && parser.parse( match ), + spaceName = parser.space || "rgba"; + + if ( values ) { + parsed = inst[ spaceName ]( values ); + + // if this was an rgba parse the assignment might happen twice + // oh well.... + inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; + rgba = inst._rgba = parsed._rgba; + + // exit each( stringParsers ) here because we matched + return false; + } + }); + + // Found a stringParser that handled it + if ( rgba.length ) { + + // if this came from a parsed string, force "transparent" when alpha is 0 + // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) + if ( rgba.join() === "0,0,0,0" ) { + jQuery.extend( rgba, colors.transparent ); + } + return inst; + } + + // named colors + return colors[ string ]; +} + +color.fn = jQuery.extend( color.prototype, { + parse: function( red, green, blue, alpha ) { + if ( red === undefined ) { + this._rgba = [ null, null, null, null ]; + return this; + } + if ( red.jquery || red.nodeType ) { + red = jQuery( red ).css( green ); + green = undefined; + } + + var inst = this, + type = jQuery.type( red ), + rgba = this._rgba = []; + + // more than 1 argument specified - assume ( red, green, blue, alpha ) + if ( green !== undefined ) { + red = [ red, green, blue, alpha ]; + type = "array"; + } + + if ( type === "string" ) { + return this.parse( stringParse( red ) || colors._default ); + } + + if ( type === "array" ) { + each( spaces.rgba.props, function( key, prop ) { + rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); + }); + return this; + } + + if ( type === "object" ) { + if ( red instanceof color ) { + each( spaces, function( spaceName, space ) { + if ( red[ space.cache ] ) { + inst[ space.cache ] = red[ space.cache ].slice(); + } + }); + } else { + each( spaces, function( spaceName, space ) { + var cache = space.cache; + each( space.props, function( key, prop ) { + + // if the cache doesn't exist, and we know how to convert + if ( !inst[ cache ] && space.to ) { + + // if the value was null, we don't need to copy it + // if the key was alpha, we don't need to copy it either + if ( key === "alpha" || red[ key ] == null ) { + return; + } + inst[ cache ] = space.to( inst._rgba ); + } + + // this is the only case where we allow nulls for ALL properties. + // call clamp with alwaysAllowEmpty + inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); + }); + + // everything defined but alpha? + if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { + // use the default of 1 + inst[ cache ][ 3 ] = 1; + if ( space.from ) { + inst._rgba = space.from( inst[ cache ] ); + } + } + }); + } + return this; + } + }, + is: function( compare ) { + var is = color( compare ), + same = true, + inst = this; + + each( spaces, function( _, space ) { + var localCache, + isCache = is[ space.cache ]; + if (isCache) { + localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; + each( space.props, function( _, prop ) { + if ( isCache[ prop.idx ] != null ) { + same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); + return same; + } + }); + } + return same; + }); + return same; + }, + _space: function() { + var used = [], + inst = this; + each( spaces, function( spaceName, space ) { + if ( inst[ space.cache ] ) { + used.push( spaceName ); + } + }); + return used.pop(); + }, + transition: function( other, distance ) { + var end = color( other ), + spaceName = end._space(), + space = spaces[ spaceName ], + startColor = this.alpha() === 0 ? color( "transparent" ) : this, + start = startColor[ space.cache ] || space.to( startColor._rgba ), + result = start.slice(); + + end = end[ space.cache ]; + each( space.props, function( key, prop ) { + var index = prop.idx, + startValue = start[ index ], + endValue = end[ index ], + type = propTypes[ prop.type ] || {}; + + // if null, don't override start value + if ( endValue === null ) { + return; + } + // if null - use end + if ( startValue === null ) { + result[ index ] = endValue; + } else { + if ( type.mod ) { + if ( endValue - startValue > type.mod / 2 ) { + startValue += type.mod; + } else if ( startValue - endValue > type.mod / 2 ) { + startValue -= type.mod; + } + } + result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); + } + }); + return this[ spaceName ]( result ); + }, + blend: function( opaque ) { + // if we are already opaque - return ourself + if ( this._rgba[ 3 ] === 1 ) { + return this; + } + + var rgb = this._rgba.slice(), + a = rgb.pop(), + blend = color( opaque )._rgba; + + return color( jQuery.map( rgb, function( v, i ) { + return ( 1 - a ) * blend[ i ] + a * v; + })); + }, + toRgbaString: function() { + var prefix = "rgba(", + rgba = jQuery.map( this._rgba, function( v, i ) { + return v == null ? ( i > 2 ? 1 : 0 ) : v; + }); + + if ( rgba[ 3 ] === 1 ) { + rgba.pop(); + prefix = "rgb("; + } + + return prefix + rgba.join() + ")"; + }, + toHslaString: function() { + var prefix = "hsla(", + hsla = jQuery.map( this.hsla(), function( v, i ) { + if ( v == null ) { + v = i > 2 ? 1 : 0; + } + + // catch 1 and 2 + if ( i && i < 3 ) { + v = Math.round( v * 100 ) + "%"; + } + return v; + }); + + if ( hsla[ 3 ] === 1 ) { + hsla.pop(); + prefix = "hsl("; + } + return prefix + hsla.join() + ")"; + }, + toHexString: function( includeAlpha ) { + var rgba = this._rgba.slice(), + alpha = rgba.pop(); + + if ( includeAlpha ) { + rgba.push( ~~( alpha * 255 ) ); + } + + return "#" + jQuery.map( rgba, function( v ) { + + // default to 0 when nulls exist + v = ( v || 0 ).toString( 16 ); + return v.length === 1 ? "0" + v : v; + }).join(""); + }, + toString: function() { + return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); + } +}); +color.fn.parse.prototype = color.fn; + +// hsla conversions adapted from: +// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 + +function hue2rgb( p, q, h ) { + h = ( h + 1 ) % 1; + if ( h * 6 < 1 ) { + return p + (q - p) * h * 6; + } + if ( h * 2 < 1) { + return q; + } + if ( h * 3 < 2 ) { + return p + (q - p) * ((2/3) - h) * 6; + } + return p; +} + +spaces.hsla.to = function ( rgba ) { + if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { + return [ null, null, null, rgba[ 3 ] ]; + } + var r = rgba[ 0 ] / 255, + g = rgba[ 1 ] / 255, + b = rgba[ 2 ] / 255, + a = rgba[ 3 ], + max = Math.max( r, g, b ), + min = Math.min( r, g, b ), + diff = max - min, + add = max + min, + l = add * 0.5, + h, s; + + if ( min === max ) { + h = 0; + } else if ( r === max ) { + h = ( 60 * ( g - b ) / diff ) + 360; + } else if ( g === max ) { + h = ( 60 * ( b - r ) / diff ) + 120; + } else { + h = ( 60 * ( r - g ) / diff ) + 240; + } + + // chroma (diff) == 0 means greyscale which, by definition, saturation = 0% + // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) + if ( diff === 0 ) { + s = 0; + } else if ( l <= 0.5 ) { + s = diff / add; + } else { + s = diff / ( 2 - add ); + } + return [ Math.round(h) % 360, s, l, a == null ? 1 : a ]; +}; + +spaces.hsla.from = function ( hsla ) { + if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { + return [ null, null, null, hsla[ 3 ] ]; + } + var h = hsla[ 0 ] / 360, + s = hsla[ 1 ], + l = hsla[ 2 ], + a = hsla[ 3 ], + q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, + p = 2 * l - q; + + return [ + Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), + Math.round( hue2rgb( p, q, h ) * 255 ), + Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), + a + ]; +}; + + +each( spaces, function( spaceName, space ) { + var props = space.props, + cache = space.cache, + to = space.to, + from = space.from; + + // makes rgba() and hsla() + color.fn[ spaceName ] = function( value ) { + + // generate a cache for this space if it doesn't exist + if ( to && !this[ cache ] ) { + this[ cache ] = to( this._rgba ); + } + if ( value === undefined ) { + return this[ cache ].slice(); + } + + var ret, + type = jQuery.type( value ), + arr = ( type === "array" || type === "object" ) ? value : arguments, + local = this[ cache ].slice(); + + each( props, function( key, prop ) { + var val = arr[ type === "object" ? key : prop.idx ]; + if ( val == null ) { + val = local[ prop.idx ]; + } + local[ prop.idx ] = clamp( val, prop ); + }); + + if ( from ) { + ret = color( from( local ) ); + ret[ cache ] = local; + return ret; + } else { + return color( local ); + } + }; + + // makes red() green() blue() alpha() hue() saturation() lightness() + each( props, function( key, prop ) { + // alpha is included in more than one space + if ( color.fn[ key ] ) { + return; + } + color.fn[ key ] = function( value ) { + var vtype = jQuery.type( value ), + fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), + local = this[ fn ](), + cur = local[ prop.idx ], + match; + + if ( vtype === "undefined" ) { + return cur; + } + + if ( vtype === "function" ) { + value = value.call( this, cur ); + vtype = jQuery.type( value ); + } + if ( value == null && prop.empty ) { + return this; + } + if ( vtype === "string" ) { + match = rplusequals.exec( value ); + if ( match ) { + value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); + } + } + local[ prop.idx ] = value; + return this[ fn ]( local ); + }; + }); +}); + +// add cssHook and .fx.step function for each named hook. +// accept a space separated string of properties +color.hook = function( hook ) { + var hooks = hook.split( " " ); + each( hooks, function( i, hook ) { + jQuery.cssHooks[ hook ] = { + set: function( elem, value ) { + var parsed, curElem, + backgroundColor = ""; + + if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) { + value = color( parsed || value ); + if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { + curElem = hook === "backgroundColor" ? elem.parentNode : elem; + while ( + (backgroundColor === "" || backgroundColor === "transparent") && + curElem && curElem.style + ) { + try { + backgroundColor = jQuery.css( curElem, "backgroundColor" ); + curElem = curElem.parentNode; + } catch ( e ) { + } + } + + value = value.blend( backgroundColor && backgroundColor !== "transparent" ? + backgroundColor : + "_default" ); + } + + value = value.toRgbaString(); + } + try { + elem.style[ hook ] = value; + } catch( e ) { + // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit' + } + } + }; + jQuery.fx.step[ hook ] = function( fx ) { + if ( !fx.colorInit ) { + fx.start = color( fx.elem, hook ); + fx.end = color( fx.end ); + fx.colorInit = true; + } + jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); + }; + }); + +}; + +color.hook( stepHooks ); + +jQuery.cssHooks.borderColor = { + expand: function( value ) { + var expanded = {}; + + each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { + expanded[ "border" + part + "Color" ] = value; + }); + return expanded; + } +}; + +// Basic color names only. +// Usage of any of the other color names requires adding yourself or including +// jquery.color.svg-names.js. +colors = jQuery.Color.names = { + // 4.1. Basic color keywords + aqua: "#00ffff", + black: "#000000", + blue: "#0000ff", + fuchsia: "#ff00ff", + gray: "#808080", + green: "#008000", + lime: "#00ff00", + maroon: "#800000", + navy: "#000080", + olive: "#808000", + purple: "#800080", + red: "#ff0000", + silver: "#c0c0c0", + teal: "#008080", + white: "#ffffff", + yellow: "#ffff00", + + // 4.2.3. "transparent" color keyword + transparent: [ null, null, null, 0 ], + + _default: "#ffffff" +}; + +})( jQuery ); + + +/******************************************************************************/ +/****************************** CLASS ANIMATIONS ******************************/ +/******************************************************************************/ +(function() { + +var classAnimationActions = [ "add", "remove", "toggle" ], + shorthandStyles = { + border: 1, + borderBottom: 1, + borderColor: 1, + borderLeft: 1, + borderRight: 1, + borderTop: 1, + borderWidth: 1, + margin: 1, + padding: 1 + }; + +$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) { + $.fx.step[ prop ] = function( fx ) { + if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { + jQuery.style( fx.elem, prop, fx.end ); + fx.setAttr = true; + } + }; +}); + +function getElementStyles( elem ) { + var key, len, + style = elem.ownerDocument.defaultView ? + elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : + elem.currentStyle, + styles = {}; + + if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { + len = style.length; + while ( len-- ) { + key = style[ len ]; + if ( typeof style[ key ] === "string" ) { + styles[ $.camelCase( key ) ] = style[ key ]; + } + } + // support: Opera, IE <9 + } else { + for ( key in style ) { + if ( typeof style[ key ] === "string" ) { + styles[ key ] = style[ key ]; + } + } + } + + return styles; +} + + +function styleDifference( oldStyle, newStyle ) { + var diff = {}, + name, value; + + for ( name in newStyle ) { + value = newStyle[ name ]; + if ( oldStyle[ name ] !== value ) { + if ( !shorthandStyles[ name ] ) { + if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { + diff[ name ] = value; + } + } + } + } + + return diff; +} + +// support: jQuery <1.8 +if ( !$.fn.addBack ) { + $.fn.addBack = function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + }; +} + +$.effects.animateClass = function( value, duration, easing, callback ) { + var o = $.speed( duration, easing, callback ); + + return this.queue( function() { + var animated = $( this ), + baseClass = animated.attr( "class" ) || "", + applyClassChange, + allAnimations = o.children ? animated.find( "*" ).addBack() : animated; + + // map the animated objects to store the original styles. + allAnimations = allAnimations.map(function() { + var el = $( this ); + return { + el: el, + start: getElementStyles( this ) + }; + }); + + // apply class change + applyClassChange = function() { + $.each( classAnimationActions, function(i, action) { + if ( value[ action ] ) { + animated[ action + "Class" ]( value[ action ] ); + } + }); + }; + applyClassChange(); + + // map all animated objects again - calculate new styles and diff + allAnimations = allAnimations.map(function() { + this.end = getElementStyles( this.el[ 0 ] ); + this.diff = styleDifference( this.start, this.end ); + return this; + }); + + // apply original class + animated.attr( "class", baseClass ); + + // map all animated objects again - this time collecting a promise + allAnimations = allAnimations.map(function() { + var styleInfo = this, + dfd = $.Deferred(), + opts = $.extend({}, o, { + queue: false, + complete: function() { + dfd.resolve( styleInfo ); + } + }); + + this.el.animate( this.diff, opts ); + return dfd.promise(); + }); + + // once all animations have completed: + $.when.apply( $, allAnimations.get() ).done(function() { + + // set the final class + applyClassChange(); + + // for each animated element, + // clear all css properties that were animated + $.each( arguments, function() { + var el = this.el; + $.each( this.diff, function(key) { + el.css( key, "" ); + }); + }); + + // this is guarnteed to be there if you use jQuery.speed() + // it also handles dequeuing the next anim... + o.complete.call( animated[ 0 ] ); + }); + }); +}; + +$.fn.extend({ + _addClass: $.fn.addClass, + addClass: function( classNames, speed, easing, callback ) { + return speed ? + $.effects.animateClass.call( this, + { add: classNames }, speed, easing, callback ) : + this._addClass( classNames ); + }, + + _removeClass: $.fn.removeClass, + removeClass: function( classNames, speed, easing, callback ) { + return speed ? + $.effects.animateClass.call( this, + { remove: classNames }, speed, easing, callback ) : + this._removeClass( classNames ); + }, + + _toggleClass: $.fn.toggleClass, + toggleClass: function( classNames, force, speed, easing, callback ) { + if ( typeof force === "boolean" || force === undefined ) { + if ( !speed ) { + // without speed parameter + return this._toggleClass( classNames, force ); + } else { + return $.effects.animateClass.call( this, + (force ? { add: classNames } : { remove: classNames }), + speed, easing, callback ); + } + } else { + // without force parameter + return $.effects.animateClass.call( this, + { toggle: classNames }, force, speed, easing ); + } + }, + + switchClass: function( remove, add, speed, easing, callback) { + return $.effects.animateClass.call( this, { + add: add, + remove: remove + }, speed, easing, callback ); + } +}); + +})(); + +/******************************************************************************/ +/*********************************** EFFECTS **********************************/ +/******************************************************************************/ + +(function() { + +$.extend( $.effects, { + version: "1.10.0", + + // Saves a set of properties in a data storage + save: function( element, set ) { + for( var i=0; i < set.length; i++ ) { + if ( set[ i ] !== null ) { + element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); + } + } + }, + + // Restores a set of previously saved properties from a data storage + restore: function( element, set ) { + var val, i; + for( i=0; i < set.length; i++ ) { + if ( set[ i ] !== null ) { + val = element.data( dataSpace + set[ i ] ); + // support: jQuery 1.6.2 + // http://bugs.jquery.com/ticket/9917 + // jQuery 1.6.2 incorrectly returns undefined for any falsy value. + // We can't differentiate between "" and 0 here, so we just assume + // empty string since it's likely to be a more common value... + if ( val === undefined ) { + val = ""; + } + element.css( set[ i ], val ); + } + } + }, + + setMode: function( el, mode ) { + if (mode === "toggle") { + mode = el.is( ":hidden" ) ? "show" : "hide"; + } + return mode; + }, + + // Translates a [top,left] array into a baseline value + // this should be a little more flexible in the future to handle a string & hash + getBaseline: function( origin, original ) { + var y, x; + switch ( origin[ 0 ] ) { + case "top": y = 0; break; + case "middle": y = 0.5; break; + case "bottom": y = 1; break; + default: y = origin[ 0 ] / original.height; + } + switch ( origin[ 1 ] ) { + case "left": x = 0; break; + case "center": x = 0.5; break; + case "right": x = 1; break; + default: x = origin[ 1 ] / original.width; + } + return { + x: x, + y: y + }; + }, + + // Wraps the element around a wrapper that copies position properties + createWrapper: function( element ) { + + // if the element is already wrapped, return it + if ( element.parent().is( ".ui-effects-wrapper" )) { + return element.parent(); + } + + // wrap the element + var props = { + width: element.outerWidth(true), + height: element.outerHeight(true), + "float": element.css( "float" ) + }, + wrapper = $( "<div></div>" ) + .addClass( "ui-effects-wrapper" ) + .css({ + fontSize: "100%", + background: "transparent", + border: "none", + margin: 0, + padding: 0 + }), + // Store the size in case width/height are defined in % - Fixes #5245 + size = { + width: element.width(), + height: element.height() + }, + active = document.activeElement; + + // support: Firefox + // Firefox incorrectly exposes anonymous content + // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 + try { + active.id; + } catch( e ) { + active = document.body; + } + + element.wrap( wrapper ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).focus(); + } + + wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element + + // transfer positioning properties to the wrapper + if ( element.css( "position" ) === "static" ) { + wrapper.css({ position: "relative" }); + element.css({ position: "relative" }); + } else { + $.extend( props, { + position: element.css( "position" ), + zIndex: element.css( "z-index" ) + }); + $.each([ "top", "left", "bottom", "right" ], function(i, pos) { + props[ pos ] = element.css( pos ); + if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { + props[ pos ] = "auto"; + } + }); + element.css({ + position: "relative", + top: 0, + left: 0, + right: "auto", + bottom: "auto" + }); + } + element.css(size); + + return wrapper.css( props ).show(); + }, + + removeWrapper: function( element ) { + var active = document.activeElement; + + if ( element.parent().is( ".ui-effects-wrapper" ) ) { + element.parent().replaceWith( element ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).focus(); + } + } + + + return element; + }, + + setTransition: function( element, list, factor, value ) { + value = value || {}; + $.each( list, function( i, x ) { + var unit = element.cssUnit( x ); + if ( unit[ 0 ] > 0 ) { + value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; + } + }); + return value; + } +}); + +// return an effect options object for the given parameters: +function _normalizeArguments( effect, options, speed, callback ) { + + // allow passing all options as the first parameter + if ( $.isPlainObject( effect ) ) { + options = effect; + effect = effect.effect; + } + + // convert to an object + effect = { effect: effect }; + + // catch (effect, null, ...) + if ( options == null ) { + options = {}; + } + + // catch (effect, callback) + if ( $.isFunction( options ) ) { + callback = options; + speed = null; + options = {}; + } + + // catch (effect, speed, ?) + if ( typeof options === "number" || $.fx.speeds[ options ] ) { + callback = speed; + speed = options; + options = {}; + } + + // catch (effect, options, callback) + if ( $.isFunction( speed ) ) { + callback = speed; + speed = null; + } + + // add options to effect + if ( options ) { + $.extend( effect, options ); + } + + speed = speed || options.duration; + effect.duration = $.fx.off ? 0 : + typeof speed === "number" ? speed : + speed in $.fx.speeds ? $.fx.speeds[ speed ] : + $.fx.speeds._default; + + effect.complete = callback || options.complete; + + return effect; +} + +function standardSpeed( speed ) { + // valid standard speeds + if ( !speed || typeof speed === "number" || $.fx.speeds[ speed ] ) { + return true; + } + + // invalid strings - treat as "normal" speed + return typeof speed === "string" && !$.effects.effect[ speed ]; +} + +$.fn.extend({ + effect: function( /* effect, options, speed, callback */ ) { + var args = _normalizeArguments.apply( this, arguments ), + mode = args.mode, + queue = args.queue, + effectMethod = $.effects.effect[ args.effect ]; + + if ( $.fx.off || !effectMethod ) { + // delegate to the original method (e.g., .show()) if possible + if ( mode ) { + return this[ mode ]( args.duration, args.complete ); + } else { + return this.each( function() { + if ( args.complete ) { + args.complete.call( this ); + } + }); + } + } + + function run( next ) { + var elem = $( this ), + complete = args.complete, + mode = args.mode; + + function done() { + if ( $.isFunction( complete ) ) { + complete.call( elem[0] ); + } + if ( $.isFunction( next ) ) { + next(); + } + } + + // if the element is hiddden and mode is hide, + // or element is visible and mode is show + if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { + done(); + } else { + effectMethod.call( elem[0], args, done ); + } + } + + return queue === false ? this.each( run ) : this.queue( queue || "fx", run ); + }, + + _show: $.fn.show, + show: function( speed ) { + if ( standardSpeed( speed ) ) { + return this._show.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "show"; + return this.effect.call( this, args ); + } + }, + + _hide: $.fn.hide, + hide: function( speed ) { + if ( standardSpeed( speed ) ) { + return this._hide.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "hide"; + return this.effect.call( this, args ); + } + }, + + // jQuery core overloads toggle and creates _toggle + __toggle: $.fn.toggle, + toggle: function( speed ) { + if ( standardSpeed( speed ) || typeof speed === "boolean" || $.isFunction( speed ) ) { + return this.__toggle.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "toggle"; + return this.effect.call( this, args ); + } + }, + + // helper functions + cssUnit: function(key) { + var style = this.css( key ), + val = []; + + $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { + if ( style.indexOf( unit ) > 0 ) { + val = [ parseFloat( style ), unit ]; + } + }); + return val; + } +}); + +})(); + +/******************************************************************************/ +/*********************************** EASING ***********************************/ +/******************************************************************************/ + +(function() { + +// based on easing equations from Robert Penner (http://www.robertpenner.com/easing) + +var baseEasings = {}; + +$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { + baseEasings[ name ] = function( p ) { + return Math.pow( p, i + 2 ); + }; +}); + +$.extend( baseEasings, { + Sine: function ( p ) { + return 1 - Math.cos( p * Math.PI / 2 ); + }, + Circ: function ( p ) { + return 1 - Math.sqrt( 1 - p * p ); + }, + Elastic: function( p ) { + return p === 0 || p === 1 ? p : + -Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 ); + }, + Back: function( p ) { + return p * p * ( 3 * p - 2 ); + }, + Bounce: function ( p ) { + var pow2, + bounce = 4; + + while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} + return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); + } +}); + +$.each( baseEasings, function( name, easeIn ) { + $.easing[ "easeIn" + name ] = easeIn; + $.easing[ "easeOut" + name ] = function( p ) { + return 1 - easeIn( 1 - p ); + }; + $.easing[ "easeInOut" + name ] = function( p ) { + return p < 0.5 ? + easeIn( p * 2 ) / 2 : + 1 - easeIn( p * -2 + 2 ) / 2; + }; +}); + +})(); + +})(jQuery)); +(function( $, undefined ) { + +var rvertical = /up|down|vertical/, + rpositivemotion = /up|left|vertical|horizontal/; + +$.effects.effect.blind = function( o, done ) { + // Create element + var el = $( this ), + props = [ "position", "top", "bottom", "left", "right", "height", "width" ], + mode = $.effects.setMode( el, o.mode || "hide" ), + direction = o.direction || "up", + vertical = rvertical.test( direction ), + ref = vertical ? "height" : "width", + ref2 = vertical ? "top" : "left", + motion = rpositivemotion.test( direction ), + animation = {}, + show = mode === "show", + wrapper, distance, margin; + + // if already wrapped, the wrapper's properties are my property. #6245 + if ( el.parent().is( ".ui-effects-wrapper" ) ) { + $.effects.save( el.parent(), props ); + } else { + $.effects.save( el, props ); + } + el.show(); + wrapper = $.effects.createWrapper( el ).css({ + overflow: "hidden" + }); + + distance = wrapper[ ref ](); + margin = parseFloat( wrapper.css( ref2 ) ) || 0; + + animation[ ref ] = show ? distance : 0; + if ( !motion ) { + el + .css( vertical ? "bottom" : "right", 0 ) + .css( vertical ? "top" : "left", "auto" ) + .css({ position: "absolute" }); + + animation[ ref2 ] = show ? margin : distance + margin; + } + + // start at 0 if we are showing + if ( show ) { + wrapper.css( ref, 0 ); + if ( ! motion ) { + wrapper.css( ref2, margin + distance ); + } + } + + // Animate + wrapper.animate( animation, { + duration: o.duration, + easing: o.easing, + queue: false, + complete: function() { + if ( mode === "hide" ) { + el.hide(); + } + $.effects.restore( el, props ); + $.effects.removeWrapper( el ); + done(); + } + }); + +}; + +})(jQuery); +(function( $, undefined ) { + +$.effects.effect.bounce = function( o, done ) { + var el = $( this ), + props = [ "position", "top", "bottom", "left", "right", "height", "width" ], + + // defaults: + mode = $.effects.setMode( el, o.mode || "effect" ), + hide = mode === "hide", + show = mode === "show", + direction = o.direction || "up", + distance = o.distance, + times = o.times || 5, + + // number of internal animations + anims = times * 2 + ( show || hide ? 1 : 0 ), + speed = o.duration / anims, + easing = o.easing, + + // utility: + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + motion = ( direction === "up" || direction === "left" ), + i, + upAnim, + downAnim, + + // we will need to re-assemble the queue to stack our animations in place + queue = el.queue(), + queuelen = queue.length; + + // Avoid touching opacity to prevent clearType and PNG issues in IE + if ( show || hide ) { + props.push( "opacity" ); + } + + $.effects.save( el, props ); + el.show(); + $.effects.createWrapper( el ); // Create Wrapper + + // default distance for the BIGGEST bounce is the outer Distance / 3 + if ( !distance ) { + distance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; + } + + if ( show ) { + downAnim = { opacity: 1 }; + downAnim[ ref ] = 0; + + // if we are showing, force opacity 0 and set the initial position + // then do the "first" animation + el.css( "opacity", 0 ) + .css( ref, motion ? -distance * 2 : distance * 2 ) + .animate( downAnim, speed, easing ); + } + + // start at the smallest distance if we are hiding + if ( hide ) { + distance = distance / Math.pow( 2, times - 1 ); + } + + downAnim = {}; + downAnim[ ref ] = 0; + // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here + for ( i = 0; i < times; i++ ) { + upAnim = {}; + upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; + + el.animate( upAnim, speed, easing ) + .animate( downAnim, speed, easing ); + + distance = hide ? distance * 2 : distance / 2; + } + + // Last Bounce when Hiding + if ( hide ) { + upAnim = { opacity: 0 }; + upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; + + el.animate( upAnim, speed, easing ); + } + + el.queue(function() { + if ( hide ) { + el.hide(); + } + $.effects.restore( el, props ); + $.effects.removeWrapper( el ); + done(); + }); + + // inject all the animations we just queued to be first in line (after "inprogress") + if ( queuelen > 1) { + queue.splice.apply( queue, + [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); + } + el.dequeue(); + +}; + +})(jQuery); +(function( $, undefined ) { + +$.effects.effect.clip = function( o, done ) { + // Create element + var el = $( this ), + props = [ "position", "top", "bottom", "left", "right", "height", "width" ], + mode = $.effects.setMode( el, o.mode || "hide" ), + show = mode === "show", + direction = o.direction || "vertical", + vert = direction === "vertical", + size = vert ? "height" : "width", + position = vert ? "top" : "left", + animation = {}, + wrapper, animate, distance; + + // Save & Show + $.effects.save( el, props ); + el.show(); + + // Create Wrapper + wrapper = $.effects.createWrapper( el ).css({ + overflow: "hidden" + }); + animate = ( el[0].tagName === "IMG" ) ? wrapper : el; + distance = animate[ size ](); + + // Shift + if ( show ) { + animate.css( size, 0 ); + animate.css( position, distance / 2 ); + } + + // Create Animation Object: + animation[ size ] = show ? distance : 0; + animation[ position ] = show ? 0 : distance / 2; + + // Animate + animate.animate( animation, { + queue: false, + duration: o.duration, + easing: o.easing, + complete: function() { + if ( !show ) { + el.hide(); + } + $.effects.restore( el, props ); + $.effects.removeWrapper( el ); + done(); + } + }); + +}; + +})(jQuery); +(function( $, undefined ) { + +$.effects.effect.drop = function( o, done ) { + + var el = $( this ), + props = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ], + mode = $.effects.setMode( el, o.mode || "hide" ), + show = mode === "show", + direction = o.direction || "left", + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + motion = ( direction === "up" || direction === "left" ) ? "pos" : "neg", + animation = { + opacity: show ? 1 : 0 + }, + distance; + + // Adjust + $.effects.save( el, props ); + el.show(); + $.effects.createWrapper( el ); + + distance = o.distance || el[ ref === "top" ? "outerHeight": "outerWidth" ]( true ) / 2; + + if ( show ) { + el + .css( "opacity", 0 ) + .css( ref, motion === "pos" ? -distance : distance ); + } + + // Animation + animation[ ref ] = ( show ? + ( motion === "pos" ? "+=" : "-=" ) : + ( motion === "pos" ? "-=" : "+=" ) ) + + distance; + + // Animate + el.animate( animation, { + queue: false, + duration: o.duration, + easing: o.easing, + complete: function() { + if ( mode === "hide" ) { + el.hide(); + } + $.effects.restore( el, props ); + $.effects.removeWrapper( el ); + done(); + } + }); +}; + +})(jQuery); +(function( $, undefined ) { + +$.effects.effect.explode = function( o, done ) { + + var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3, + cells = rows, + el = $( this ), + mode = $.effects.setMode( el, o.mode || "hide" ), + show = mode === "show", + + // show and then visibility:hidden the element before calculating offset + offset = el.show().css( "visibility", "hidden" ).offset(), + + // width and height of a piece + width = Math.ceil( el.outerWidth() / cells ), + height = Math.ceil( el.outerHeight() / rows ), + pieces = [], + + // loop + i, j, left, top, mx, my; + + // children animate complete: + function childComplete() { + pieces.push( this ); + if ( pieces.length === rows * cells ) { + animComplete(); + } + } + + // clone the element for each row and cell. + for( i = 0; i < rows ; i++ ) { // ===> + top = offset.top + i * height; + my = i - ( rows - 1 ) / 2 ; + + for( j = 0; j < cells ; j++ ) { // ||| + left = offset.left + j * width; + mx = j - ( cells - 1 ) / 2 ; + + // Create a clone of the now hidden main element that will be absolute positioned + // within a wrapper div off the -left and -top equal to size of our pieces + el + .clone() + .appendTo( "body" ) + .wrap( "<div></div>" ) + .css({ + position: "absolute", + visibility: "visible", + left: -j * width, + top: -i * height + }) + + // select the wrapper - make it overflow: hidden and absolute positioned based on + // where the original was located +left and +top equal to the size of pieces + .parent() + .addClass( "ui-effects-explode" ) + .css({ + position: "absolute", + overflow: "hidden", + width: width, + height: height, + left: left + ( show ? mx * width : 0 ), + top: top + ( show ? my * height : 0 ), + opacity: show ? 0 : 1 + }).animate({ + left: left + ( show ? 0 : mx * width ), + top: top + ( show ? 0 : my * height ), + opacity: show ? 1 : 0 + }, o.duration || 500, o.easing, childComplete ); + } + } + + function animComplete() { + el.css({ + visibility: "visible" + }); + $( pieces ).remove(); + if ( !show ) { + el.hide(); + } + done(); + } +}; + +})(jQuery); +(function( $, undefined ) { + +$.effects.effect.fade = function( o, done ) { + var el = $( this ), + mode = $.effects.setMode( el, o.mode || "toggle" ); + + el.animate({ + opacity: mode + }, { + queue: false, + duration: o.duration, + easing: o.easing, + complete: done + }); +}; + +})( jQuery ); +(function( $, undefined ) { + +$.effects.effect.fold = function( o, done ) { + + // Create element + var el = $( this ), + props = [ "position", "top", "bottom", "left", "right", "height", "width" ], + mode = $.effects.setMode( el, o.mode || "hide" ), + show = mode === "show", + hide = mode === "hide", + size = o.size || 15, + percent = /([0-9]+)%/.exec( size ), + horizFirst = !!o.horizFirst, + widthFirst = show !== horizFirst, + ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ], + duration = o.duration / 2, + wrapper, distance, + animation1 = {}, + animation2 = {}; + + $.effects.save( el, props ); + el.show(); + + // Create Wrapper + wrapper = $.effects.createWrapper( el ).css({ + overflow: "hidden" + }); + distance = widthFirst ? + [ wrapper.width(), wrapper.height() ] : + [ wrapper.height(), wrapper.width() ]; + + if ( percent ) { + size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; + } + if ( show ) { + wrapper.css( horizFirst ? { + height: 0, + width: size + } : { + height: size, + width: 0 + }); + } + + // Animation + animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size; + animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0; + + // Animate + wrapper + .animate( animation1, duration, o.easing ) + .animate( animation2, duration, o.easing, function() { + if ( hide ) { + el.hide(); + } + $.effects.restore( el, props ); + $.effects.removeWrapper( el ); + done(); + }); + +}; + +})(jQuery); +(function( $, undefined ) { + +$.effects.effect.highlight = function( o, done ) { + var elem = $( this ), + props = [ "backgroundImage", "backgroundColor", "opacity" ], + mode = $.effects.setMode( elem, o.mode || "show" ), + animation = { + backgroundColor: elem.css( "backgroundColor" ) + }; + + if (mode === "hide") { + animation.opacity = 0; + } + + $.effects.save( elem, props ); + + elem + .show() + .css({ + backgroundImage: "none", + backgroundColor: o.color || "#ffff99" + }) + .animate( animation, { + queue: false, + duration: o.duration, + easing: o.easing, + complete: function() { + if ( mode === "hide" ) { + elem.hide(); + } + $.effects.restore( elem, props ); + done(); + } + }); +}; + +})(jQuery); +(function( $, undefined ) { + +$.effects.effect.pulsate = function( o, done ) { + var elem = $( this ), + mode = $.effects.setMode( elem, o.mode || "show" ), + show = mode === "show", + hide = mode === "hide", + showhide = ( show || mode === "hide" ), + + // showing or hiding leaves of the "last" animation + anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), + duration = o.duration / anims, + animateTo = 0, + queue = elem.queue(), + queuelen = queue.length, + i; + + if ( show || !elem.is(":visible")) { + elem.css( "opacity", 0 ).show(); + animateTo = 1; + } + + // anims - 1 opacity "toggles" + for ( i = 1; i < anims; i++ ) { + elem.animate({ + opacity: animateTo + }, duration, o.easing ); + animateTo = 1 - animateTo; + } + + elem.animate({ + opacity: animateTo + }, duration, o.easing); + + elem.queue(function() { + if ( hide ) { + elem.hide(); + } + done(); + }); + + // We just queued up "anims" animations, we need to put them next in the queue + if ( queuelen > 1 ) { + queue.splice.apply( queue, + [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); + } + elem.dequeue(); +}; + +})(jQuery); +(function( $, undefined ) { + +$.effects.effect.puff = function( o, done ) { + var elem = $( this ), + mode = $.effects.setMode( elem, o.mode || "hide" ), + hide = mode === "hide", + percent = parseInt( o.percent, 10 ) || 150, + factor = percent / 100, + original = { + height: elem.height(), + width: elem.width(), + outerHeight: elem.outerHeight(), + outerWidth: elem.outerWidth() + }; + + $.extend( o, { + effect: "scale", + queue: false, + fade: true, + mode: mode, + complete: done, + percent: hide ? percent : 100, + from: hide ? + original : + { + height: original.height * factor, + width: original.width * factor, + outerHeight: original.outerHeight * factor, + outerWidth: original.outerWidth * factor + } + }); + + elem.effect( o ); +}; + +$.effects.effect.scale = function( o, done ) { + + // Create element + var el = $( this ), + options = $.extend( true, {}, o ), + mode = $.effects.setMode( el, o.mode || "effect" ), + percent = parseInt( o.percent, 10 ) || + ( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ), + direction = o.direction || "both", + origin = o.origin, + original = { + height: el.height(), + width: el.width(), + outerHeight: el.outerHeight(), + outerWidth: el.outerWidth() + }, + factor = { + y: direction !== "horizontal" ? (percent / 100) : 1, + x: direction !== "vertical" ? (percent / 100) : 1 + }; + + // We are going to pass this effect to the size effect: + options.effect = "size"; + options.queue = false; + options.complete = done; + + // Set default origin and restore for show/hide + if ( mode !== "effect" ) { + options.origin = origin || ["middle","center"]; + options.restore = true; + } + + options.from = o.from || ( mode === "show" ? { + height: 0, + width: 0, + outerHeight: 0, + outerWidth: 0 + } : original ); + options.to = { + height: original.height * factor.y, + width: original.width * factor.x, + outerHeight: original.outerHeight * factor.y, + outerWidth: original.outerWidth * factor.x + }; + + // Fade option to support puff + if ( options.fade ) { + if ( mode === "show" ) { + options.from.opacity = 0; + options.to.opacity = 1; + } + if ( mode === "hide" ) { + options.from.opacity = 1; + options.to.opacity = 0; + } + } + + // Animate + el.effect( options ); + +}; + +$.effects.effect.size = function( o, done ) { + + // Create element + var original, baseline, factor, + el = $( this ), + props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ], + + // Always restore + props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ], + + // Copy for children + props2 = [ "width", "height", "overflow" ], + cProps = [ "fontSize" ], + vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], + hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], + + // Set options + mode = $.effects.setMode( el, o.mode || "effect" ), + restore = o.restore || mode !== "effect", + scale = o.scale || "both", + origin = o.origin || [ "middle", "center" ], + position = el.css( "position" ), + props = restore ? props0 : props1, + zero = { + height: 0, + width: 0, + outerHeight: 0, + outerWidth: 0 + }; + + if ( mode === "show" ) { + el.show(); + } + original = { + height: el.height(), + width: el.width(), + outerHeight: el.outerHeight(), + outerWidth: el.outerWidth() + }; + + if ( o.mode === "toggle" && mode === "show" ) { + el.from = o.to || zero; + el.to = o.from || original; + } else { + el.from = o.from || ( mode === "show" ? zero : original ); + el.to = o.to || ( mode === "hide" ? zero : original ); + } + + // Set scaling factor + factor = { + from: { + y: el.from.height / original.height, + x: el.from.width / original.width + }, + to: { + y: el.to.height / original.height, + x: el.to.width / original.width + } + }; + + // Scale the css box + if ( scale === "box" || scale === "both" ) { + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + props = props.concat( vProps ); + el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from ); + el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to ); + } + + // Horizontal props scaling + if ( factor.from.x !== factor.to.x ) { + props = props.concat( hProps ); + el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from ); + el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to ); + } + } + + // Scale the content + if ( scale === "content" || scale === "both" ) { + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + props = props.concat( cProps ).concat( props2 ); + el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from ); + el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to ); + } + } + + $.effects.save( el, props ); + el.show(); + $.effects.createWrapper( el ); + el.css( "overflow", "hidden" ).css( el.from ); + + // Adjust + if (origin) { // Calculate baseline shifts + baseline = $.effects.getBaseline( origin, original ); + el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y; + el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x; + el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y; + el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x; + } + el.css( el.from ); // set top & left + + // Animate + if ( scale === "content" || scale === "both" ) { // Scale the children + + // Add margins/font-size + vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps); + hProps = hProps.concat([ "marginLeft", "marginRight" ]); + props2 = props0.concat(vProps).concat(hProps); + + el.find( "*[width]" ).each( function(){ + var child = $( this ), + c_original = { + height: child.height(), + width: child.width(), + outerHeight: child.outerHeight(), + outerWidth: child.outerWidth() + }; + if (restore) { + $.effects.save(child, props2); + } + + child.from = { + height: c_original.height * factor.from.y, + width: c_original.width * factor.from.x, + outerHeight: c_original.outerHeight * factor.from.y, + outerWidth: c_original.outerWidth * factor.from.x + }; + child.to = { + height: c_original.height * factor.to.y, + width: c_original.width * factor.to.x, + outerHeight: c_original.height * factor.to.y, + outerWidth: c_original.width * factor.to.x + }; + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from ); + child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to ); + } + + // Horizontal props scaling + if ( factor.from.x !== factor.to.x ) { + child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from ); + child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to ); + } + + // Animate children + child.css( child.from ); + child.animate( child.to, o.duration, o.easing, function() { + + // Restore children + if ( restore ) { + $.effects.restore( child, props2 ); + } + }); + }); + } + + // Animate + el.animate( el.to, { + queue: false, + duration: o.duration, + easing: o.easing, + complete: function() { + if ( el.to.opacity === 0 ) { + el.css( "opacity", el.from.opacity ); + } + if( mode === "hide" ) { + el.hide(); + } + $.effects.restore( el, props ); + if ( !restore ) { + + // we need to calculate our new positioning based on the scaling + if ( position === "static" ) { + el.css({ + position: "relative", + top: el.to.top, + left: el.to.left + }); + } else { + $.each([ "top", "left" ], function( idx, pos ) { + el.css( pos, function( _, str ) { + var val = parseInt( str, 10 ), + toRef = idx ? el.to.left : el.to.top; + + // if original was "auto", recalculate the new value from wrapper + if ( str === "auto" ) { + return toRef + "px"; + } + + return val + toRef + "px"; + }); + }); + } + } + + $.effects.removeWrapper( el ); + done(); + } + }); + +}; + +})(jQuery); +(function( $, undefined ) { + +$.effects.effect.shake = function( o, done ) { + + var el = $( this ), + props = [ "position", "top", "bottom", "left", "right", "height", "width" ], + mode = $.effects.setMode( el, o.mode || "effect" ), + direction = o.direction || "left", + distance = o.distance || 20, + times = o.times || 3, + anims = times * 2 + 1, + speed = Math.round(o.duration/anims), + ref = (direction === "up" || direction === "down") ? "top" : "left", + positiveMotion = (direction === "up" || direction === "left"), + animation = {}, + animation1 = {}, + animation2 = {}, + i, + + // we will need to re-assemble the queue to stack our animations in place + queue = el.queue(), + queuelen = queue.length; + + $.effects.save( el, props ); + el.show(); + $.effects.createWrapper( el ); + + // Animation + animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; + animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; + animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; + + // Animate + el.animate( animation, speed, o.easing ); + + // Shakes + for ( i = 1; i < times; i++ ) { + el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing ); + } + el + .animate( animation1, speed, o.easing ) + .animate( animation, speed / 2, o.easing ) + .queue(function() { + if ( mode === "hide" ) { + el.hide(); + } + $.effects.restore( el, props ); + $.effects.removeWrapper( el ); + done(); + }); + + // inject all the animations we just queued to be first in line (after "inprogress") + if ( queuelen > 1) { + queue.splice.apply( queue, + [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); + } + el.dequeue(); + +}; + +})(jQuery); +(function( $, undefined ) { + +$.effects.effect.slide = function( o, done ) { + + // Create element + var el = $( this ), + props = [ "position", "top", "bottom", "left", "right", "width", "height" ], + mode = $.effects.setMode( el, o.mode || "show" ), + show = mode === "show", + direction = o.direction || "left", + ref = (direction === "up" || direction === "down") ? "top" : "left", + positiveMotion = (direction === "up" || direction === "left"), + distance, + animation = {}; + + // Adjust + $.effects.save( el, props ); + el.show(); + distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ); + + $.effects.createWrapper( el ).css({ + overflow: "hidden" + }); + + if ( show ) { + el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance ); + } + + // Animation + animation[ ref ] = ( show ? + ( positiveMotion ? "+=" : "-=") : + ( positiveMotion ? "-=" : "+=")) + + distance; + + // Animate + el.animate( animation, { + queue: false, + duration: o.duration, + easing: o.easing, + complete: function() { + if ( mode === "hide" ) { + el.hide(); + } + $.effects.restore( el, props ); + $.effects.removeWrapper( el ); + done(); + } + }); +}; + +})(jQuery); +(function( $, undefined ) { + +$.effects.effect.transfer = function( o, done ) { + var elem = $( this ), + target = $( o.to ), + targetFixed = target.css( "position" ) === "fixed", + body = $("body"), + fixTop = targetFixed ? body.scrollTop() : 0, + fixLeft = targetFixed ? body.scrollLeft() : 0, + endPosition = target.offset(), + animation = { + top: endPosition.top - fixTop , + left: endPosition.left - fixLeft , + height: target.innerHeight(), + width: target.innerWidth() + }, + startPosition = elem.offset(), + transfer = $( "<div class='ui-effects-transfer'></div>" ) + .appendTo( document.body ) + .addClass( o.className ) + .css({ + top: startPosition.top - fixTop , + left: startPosition.left - fixLeft , + height: elem.innerHeight(), + width: elem.innerWidth(), + position: targetFixed ? "fixed" : "absolute" + }) + .animate( animation, o.duration, o.easing, function() { + transfer.remove(); + done(); + }); +}; + +})(jQuery); diff --git a/core/js/jquery-ui-1.8.16.custom.min.js b/core/js/jquery-ui-1.8.16.custom.min.js deleted file mode 100644 index eefefa8579d..00000000000 --- a/core/js/jquery-ui-1.8.16.custom.min.js +++ /dev/null @@ -1,761 +0,0 @@ -/*! - * jQuery UI 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.16", -keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({propAttr:c.fn.prop||c.fn.attr,_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d= -this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this, -"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart": -"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight, -outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a, -"tabindex"),d=isNaN(b);return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&& -a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&& -c.ui.isOverAxis(b,e,i)}})}})(jQuery); -;/*! - * jQuery UI Widget 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)try{b(d).triggerHandler("remove")}catch(e){}k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(d){}});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]= -function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)): -d;if(e&&d.charAt(0)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options= -b.extend(true,{},this.options,this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+ -"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled", -c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); -;/*! - * jQuery UI Mouse 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Mouse - * - * Depends: - * jquery.ui.widget.js - */ -(function(b){var d=false;b(document).mouseup(function(){d=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(c){return a._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(true===b.data(c.target,a.widgetName+".preventClickEvent")){b.removeData(c.target,a.widgetName+".preventClickEvent");c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+ -this.widgetName)},_mouseDown:function(a){if(!d){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var c=this,f=a.which==1,g=typeof this.options.cancel=="string"&&a.target.nodeName?b(a.target).closest(this.options.cancel).length:false;if(!f||g||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted= -this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();return true}}true===b.data(a.target,this.widgetName+".preventClickEvent")&&b.removeData(a.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(e){return c._mouseMove(e)};this._mouseUpDelegate=function(e){return c._mouseUp(e)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return d=true}},_mouseMove:function(a){if(b.browser.msie&& -!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted= -false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); -;/* - * jQuery UI Position 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Position - */ -(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY, -left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+= -k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-= -m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left= -d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= -a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), -g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); -;/* - * jQuery UI Draggable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Draggables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== -"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= -this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;if(b.iframeFix)d(b.iframeFix===true?"iframe":b.iframeFix).each(function(){d('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")});return true},_mouseStart:function(a){var b=this.options; -this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}); -this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);d.ui.ddmanager&&d.ui.ddmanager.dragStart(this,a);return true}, -_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b= -false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration, -10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},_mouseUp:function(a){this.options.iframeFix===true&&d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});d.ui.ddmanager&&d.ui.ddmanager.dragStop(this,a);return d.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle|| -!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&& -a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent= -this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"), -10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"), -10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[a.containment=="document"?0:d(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,a.containment=="document"?0:d(window).scrollTop()-this.offset.relative.top-this.offset.parent.top, -(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){a=d(a.containment);var b=a[0];if(b){a.offset();var c=d(b).css("overflow")!= -"hidden";this.containment=[(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0),(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0),(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"), -10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=a}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+ -this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&& -!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,h=a.pageY;if(this.originalPosition){var g;if(this.containment){if(this.relative_container){g=this.relative_container.offset();g=[this.containment[0]+g.left,this.containment[1]+g.top,this.containment[2]+g.left,this.containment[3]+g.top]}else g=this.containment;if(a.pageX-this.offset.click.left<g[0])e=g[0]+this.offset.click.left; -if(a.pageY-this.offset.click.top<g[1])h=g[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>g[2])e=g[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>g[3])h=g[3]+this.offset.click.top}if(b.grid){h=b.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/b.grid[1])*b.grid[1]:this.originalPageY;h=g?!(h-this.offset.click.top<g[1]||h-this.offset.click.top>g[3])?h:!(h-this.offset.click.top<g[1])?h-b.grid[1]:h+b.grid[1]:h;e=b.grid[0]?this.originalPageX+Math.round((e-this.originalPageX)/ -b.grid[0])*b.grid[0]:this.originalPageX;e=g?!(e-this.offset.click.left<g[0]||e-this.offset.click.left>g[2])?e:!(e-this.offset.click.left<g[0])?e-b.grid[0]:e+b.grid[0]:e}}return{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop()),left:e-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&d.browser.version< -526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(a,b,c){c=c||this._uiHash();d.ui.plugin.call(this,a,[b,c]);if(a=="drag")this.positionAbs=this._convertPositionTo("absolute");return d.Widget.prototype._trigger.call(this,a,b, -c)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});d.extend(d.ui.draggable,{version:"1.8.16"});d.ui.plugin.add("draggable","connectToSortable",{start:function(a,b){var c=d(this).data("draggable"),f=c.options,e=d.extend({},b,{item:c.element});c.sortables=[];d(f.connectToSortable).each(function(){var h=d.data(this,"sortable");if(h&&!h.options.disabled){c.sortables.push({instance:h,shouldRevert:h.options.revert}); -h.refreshPositions();h._trigger("activate",a,e)}})},stop:function(a,b){var c=d(this).data("draggable"),f=d.extend({},b,{item:c.element});d.each(c.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;c.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(a);this.instance.options.helper=this.instance.options._helper;c.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval= -false;this.instance._trigger("deactivate",a,f)}})},drag:function(a,b){var c=d(this).data("draggable"),f=this;d.each(c.sortables,function(){this.instance.positionAbs=c.positionAbs;this.instance.helperProportions=c.helperProportions;this.instance.offset.click=c.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=d(f).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",true); -this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return b.helper[0]};a.target=this.instance.currentItem[0];this.instance._mouseCapture(a,true);this.instance._mouseStart(a,true,true);this.instance.offset.click.top=c.offset.click.top;this.instance.offset.click.left=c.offset.click.left;this.instance.offset.parent.left-=c.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=c.offset.parent.top-this.instance.offset.parent.top; -c._trigger("toSortable",a);c.dropped=this.instance.element;c.currentItem=c.element;this.instance.fromOutside=c}this.instance.currentItem&&this.instance._mouseDrag(a)}else if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",a,this.instance._uiHash(this.instance));this.instance._mouseStop(a,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&& -this.instance.placeholder.remove();c._trigger("fromSortable",a);c.dropped=false}})}});d.ui.plugin.add("draggable","cursor",{start:function(){var a=d("body"),b=d(this).data("draggable").options;if(a.css("cursor"))b._cursor=a.css("cursor");a.css("cursor",b.cursor)},stop:function(){var a=d(this).data("draggable").options;a._cursor&&d("body").css("cursor",a._cursor)}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity= -a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!= -"x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop+c.scrollSpeed;else if(a.pageY-b.overflowOffset.top<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop-c.scrollSpeed;if(!c.axis||c.axis!="y")if(b.overflowOffset.left+b.scrollParent[0].offsetWidth-a.pageX<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft+c.scrollSpeed;else if(a.pageX-b.overflowOffset.left< -c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft-c.scrollSpeed}else{if(!c.axis||c.axis!="x")if(a.pageY-d(document).scrollTop()<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()-c.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()+c.scrollSpeed);if(!c.axis||c.axis!="y")if(a.pageX-d(document).scrollLeft()<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()- -c.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()+c.scrollSpeed)}f!==false&&d.ui.ddmanager&&!c.dropBehaviour&&d.ui.ddmanager.prepareOffsets(b,a)}});d.ui.plugin.add("draggable","snap",{start:function(){var a=d(this).data("draggable"),b=a.options;a.snapElements=[];d(b.snap.constructor!=String?b.snap.items||":data(draggable)":b.snap).each(function(){var c=d(this),f=c.offset();this!=a.element[0]&&a.snapElements.push({item:this, -width:c.outerWidth(),height:c.outerHeight(),top:f.top,left:f.left})})},drag:function(a,b){for(var c=d(this).data("draggable"),f=c.options,e=f.snapTolerance,h=b.offset.left,g=h+c.helperProportions.width,n=b.offset.top,o=n+c.helperProportions.height,i=c.snapElements.length-1;i>=0;i--){var j=c.snapElements[i].left,l=j+c.snapElements[i].width,k=c.snapElements[i].top,m=k+c.snapElements[i].height;if(j-e<h&&h<l+e&&k-e<n&&n<m+e||j-e<h&&h<l+e&&k-e<o&&o<m+e||j-e<g&&g<l+e&&k-e<n&&n<m+e||j-e<g&&g<l+e&&k-e<o&& -o<m+e){if(f.snapMode!="inner"){var p=Math.abs(k-o)<=e,q=Math.abs(m-n)<=e,r=Math.abs(j-g)<=e,s=Math.abs(l-h)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:k-c.helperProportions.height,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:m,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:j-c.helperProportions.width}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:l}).left-c.margins.left}var t= -p||q||r||s;if(f.snapMode!="outer"){p=Math.abs(k-n)<=e;q=Math.abs(m-o)<=e;r=Math.abs(j-h)<=e;s=Math.abs(l-g)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:k,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:m-c.helperProportions.height,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:j}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:l-c.helperProportions.width}).left-c.margins.left}if(!c.snapElements[i].snapping&& -(p||q||r||s||t))c.options.snap.snap&&c.options.snap.snap.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[i].item}));c.snapElements[i].snapping=p||q||r||s||t}else{c.snapElements[i].snapping&&c.options.snap.release&&c.options.snap.release.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[i].item}));c.snapElements[i].snapping=false}}}});d.ui.plugin.add("draggable","stack",{start:function(){var a=d(this).data("draggable").options;a=d.makeArray(d(a.stack)).sort(function(c,f){return(parseInt(d(c).css("zIndex"), -10)||0)-(parseInt(d(f).css("zIndex"),10)||0)});if(a.length){var b=parseInt(a[0].style.zIndex)||0;d(a).each(function(c){this.style.zIndex=b+c});this[0].style.zIndex=b+a.length}}});d.ui.plugin.add("draggable","zIndex",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("zIndex"))b._zIndex=a.css("zIndex");a.css("zIndex",b.zIndex)},stop:function(a,b){a=d(this).data("draggable").options;a._zIndex&&d(b.helper).css("zIndex",a._zIndex)}})})(jQuery); -;/* - * jQuery UI Droppable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Droppables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.mouse.js - * jquery.ui.draggable.js - */ -(function(d){d.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var a=this.options,b=a.accept;this.isover=0;this.isout=1;this.accept=d.isFunction(b)?b:function(c){return c.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};d.ui.ddmanager.droppables[a.scope]=d.ui.ddmanager.droppables[a.scope]||[];d.ui.ddmanager.droppables[a.scope].push(this); -a.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var a=d.ui.ddmanager.droppables[this.options.scope],b=0;b<a.length;b++)a[b]==this&&a.splice(b,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(a,b){if(a=="accept")this.accept=d.isFunction(b)?b:function(c){return c.is(b)};d.Widget.prototype._setOption.apply(this,arguments)},_activate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&& -this.element.addClass(this.options.activeClass);b&&this._trigger("activate",a,this.ui(b))},_deactivate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);b&&this._trigger("deactivate",a,this.ui(b))},_over:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass); -this._trigger("over",a,this.ui(b))}},_out:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",a,this.ui(b))}},_drop:function(a,b){var c=b||d.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return false;var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var g= -d.data(this,"droppable");if(g.options.greedy&&!g.options.disabled&&g.options.scope==c.options.scope&&g.accept.call(g.element[0],c.currentItem||c.element)&&d.ui.intersect(c,d.extend(g,{offset:g.element.offset()}),g.options.tolerance)){e=true;return false}});if(e)return false;if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop", -a,this.ui(c));return this.element}return false},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}});d.extend(d.ui.droppable,{version:"1.8.16"});d.ui.intersect=function(a,b,c){if(!b.offset)return false;var e=(a.positionAbs||a.position.absolute).left,g=e+a.helperProportions.width,f=(a.positionAbs||a.position.absolute).top,h=f+a.helperProportions.height,i=b.offset.left,k=i+b.proportions.width,j=b.offset.top,l=j+b.proportions.height; -switch(c){case "fit":return i<=e&&g<=k&&j<=f&&h<=l;case "intersect":return i<e+a.helperProportions.width/2&&g-a.helperProportions.width/2<k&&j<f+a.helperProportions.height/2&&h-a.helperProportions.height/2<l;case "pointer":return d.ui.isOver((a.positionAbs||a.position.absolute).top+(a.clickOffset||a.offset.click).top,(a.positionAbs||a.position.absolute).left+(a.clickOffset||a.offset.click).left,j,i,b.proportions.height,b.proportions.width);case "touch":return(f>=j&&f<=l||h>=j&&h<=l||f<j&&h>l)&&(e>= -i&&e<=k||g>=i&&g<=k||e<i&&g>k);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f<c.length;f++)if(!(c[f].options.disabled||a&&!c[f].accept.call(c[f].element[0],a.currentItem||a.element))){for(var h=0;h<g.length;h++)if(g[h]==c[f].element[0]){c[f].proportions.height=0;continue a}c[f].visible=c[f].element.css("display")!= -"none";if(c[f].visible){e=="mousedown"&&c[f]._activate.call(c[f],b);c[f].offset=c[f].element.offset();c[f].proportions={width:c[f].element[0].offsetWidth,height:c[f].element[0].offsetHeight}}}},drop:function(a,b){var c=false;d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&d.ui.intersect(a,this,this.options.tolerance))c=c||this._drop.call(this,b);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],a.currentItem|| -a.element)){this.isout=1;this.isover=0;this._deactivate.call(this,b)}}});return c},dragStart:function(a,b){a.element.parents(":not(body,html)").bind("scroll.droppable",function(){a.options.refreshPositions||d.ui.ddmanager.prepareOffsets(a,b)})},drag:function(a,b){a.options.refreshPositions&&d.ui.ddmanager.prepareOffsets(a,b);d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var c=d.ui.intersect(a,this,this.options.tolerance); -if(c=!c&&this.isover==1?"isout":c&&this.isover==0?"isover":null){var e;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){e=d.data(g[0],"droppable");e.greedyChild=c=="isover"?1:0}}if(e&&c=="isover"){e.isover=0;e.isout=1;e._out.call(e,b)}this[c]=1;this[c=="isout"?"isover":"isout"]=0;this[c=="isover"?"_over":"_out"].call(this,b);if(e&&c=="isout"){e.isout=0;e.isover=1;e._over.call(e,b)}}}})},dragStop:function(a,b){a.element.parents(":not(body,html)").unbind("scroll.droppable"); -a.options.refreshPositions||d.ui.ddmanager.prepareOffsets(a,b)}}})(jQuery); -;/* - * jQuery UI Resizable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Resizables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(e){e.widget("ui.resizable",e.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");e.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element, -_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&e.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), -top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= -this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", -nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d<c.length;d++){var f=e.trim(c[d]),g=e('<div class="ui-resizable-handle '+("ui-resizable-"+f)+'"></div>');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== -String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); -this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){e(this).removeClass("ui-resizable-autohide");b._handles.show()}},function(){if(!a.disabled)if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy(); -var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a= -false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"}); -this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff= -{width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis]; -if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false}, -_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f, -{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateVirtualBoundaries:function(b){var a=this.options,c,d,f;a={minWidth:k(a.minWidth)?a.minWidth:0,maxWidth:k(a.maxWidth)?a.maxWidth:Infinity,minHeight:k(a.minHeight)?a.minHeight:0,maxHeight:k(a.maxHeight)?a.maxHeight: -Infinity};if(this._aspectRatio||b){b=a.minHeight*this.aspectRatio;d=a.minWidth/this.aspectRatio;c=a.maxHeight*this.aspectRatio;f=a.maxWidth/this.aspectRatio;if(b>a.minWidth)a.minWidth=b;if(d>a.minHeight)a.minHeight=d;if(c<a.maxWidth)a.maxWidth=c;if(f<a.maxHeight)a.maxHeight=f}this._vBoundaries=a},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width= -b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(k(b.height))b.width=b.height*this.aspectRatio;else if(k(b.width))b.height=b.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top=a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this._vBoundaries,c=this.axis,d=k(b.width)&&a.maxWidth&&a.maxWidth<b.width,f=k(b.height)&&a.maxHeight&&a.maxHeight<b.height,g=k(b.width)&&a.minWidth&& -a.minWidth>b.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&l)b.left=i-a.minWidth;if(d&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left= -null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var c=this._proportionallyResizeElements[a];if(!this.borderDif){var d=[c.css("borderTopWidth"),c.css("borderRightWidth"),c.css("borderBottomWidth"),c.css("borderLeftWidth")],f=[c.css("paddingTop"),c.css("paddingRight"),c.css("paddingBottom"),c.css("paddingLeft")];this.borderDif=e.map(d,function(g,h){g=parseInt(g,10)|| -0;h=parseInt(f[h],10)||0;return g+h})}e.browser.msie&&(e(b).is(":hidden")||e(b).parents(":hidden").length)||c.css({height:b.height()-this.borderDif[0]-this.borderDif[2]||0,width:b.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var b=this.options;this.elementOffset=this.element.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+ -a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+ -c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]); -b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.16"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(), -10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top- -f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var l=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:l.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(l.css("position"))){c._revertToRelativePosition=true;l.css({position:"absolute",top:"auto",left:"auto"})}l.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType? -e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a= -e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing, -step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= -e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset; -var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left: -a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top- -d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition, -f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, -display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b= -e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height= -d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); -;/* - * jQuery UI Selectable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), -selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, -c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting", -c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d= -this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting"); -a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&& -!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d= -e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.16"})})(jQuery); -;/* - * jQuery UI Sortable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Sortables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(d){d.widget("ui.sortable",d.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var a=this.options;this.containerCache={};this.element.addClass("ui-sortable"); -this.refresh();this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a=== -"disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&& -!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top, -left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]}; -this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!= -document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a); -return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop+b.scrollSpeed;else if(a.pageY-this.overflowOffset.top< -b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop-b.scrollSpeed;if(this.overflowOffset.left+this.scrollParent[0].offsetWidth-a.pageX<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft+b.scrollSpeed;else if(a.pageX-this.overflowOffset.left<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft-b.scrollSpeed}else{if(a.pageY-d(document).scrollTop()<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()- -b.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()+b.scrollSpeed);if(a.pageX-d(document).scrollLeft()<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()-b.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()+b.scrollSpeed)}c!==false&&d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this, -a)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(b=this.items.length-1;b>=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0], -e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset(); -c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"): -this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null, -dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")}, -toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+j<k&&b+l>g&&b+l<h;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers|| -this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?j:g<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<h&&i<e+this.helperProportions.height/2&&f-this.helperProportions.height/2<k},_intersectsWithPointer:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left,a.width);b=b&&a;a=this._getDragVerticalDirection(); -var c=this._getDragHorizontalDirection();if(!b)return false;return this.floating?c&&c=="right"||a=="down"?2:1:a&&(a=="down"?2:1)},_intersectsWithSides:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width);var c=this._getDragVerticalDirection(),e=this._getDragHorizontalDirection();return this.floating&&e?e=="right"&&a||e=="left"&&!a:c&&(c=="down"&&b||c=="up"&&!b)}, -_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith(); -if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), -this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(a){this.items=[];this.containers=[this];var b=this.items,c=[[d.isFunction(this.options.items)?this.options.items.call(this.element[0],a,{item:this.currentItem}):d(this.options.items,this.element), -this]],e=this._connectWith();if(e)for(var f=e.length-1;f>=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h<g;h++){i=d(e[h]);i.data("sortable-item",a);b.push({item:i,instance:a,width:0,height:0,left:0,top:0})}}},refreshPositions:function(a){if(this.offsetParent&& -this.helper)this.offset.parent=this._getParentOffset();for(var b=this.items.length-1;b>=0;b--){var c=this.items[b];if(!(c.instance!=this.currentContainer&&this.currentContainer&&c.item[0]!=this.currentItem[0])){var e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b= -this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f= -d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")|| -0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out", -a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h- -f)<b){b=Math.abs(h-f);e=this.items[g]}}if(e||this.options.dropOnEmpty){this.currentContainer=this.containers[c];e?this._rearrange(a,e,null,true):this._rearrange(a,null,this.containers[c].element,true);this._trigger("change",a,this._uiHash());this.containers[c]._trigger("change",a,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}}},_createHelper:function(a){var b= -this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a,this.currentItem])):b.helper=="clone"?this.currentItem.clone():this.currentItem;a.parents("body").length||d(b.appendTo!="parent"?b.appendTo:this.currentItem[0].parentNode)[0].appendChild(a[0]);if(a[0]==this.currentItem[0])this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")};if(a[0].style.width== -""||b.forceHelperSize)a.width(this.currentItem.width());if(a[0].style.height==""||b.forceHelperSize)a.height(this.currentItem.height());return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top= -this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a= -{top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"), -10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"? -document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)){var b=d(a.containment)[0];a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"), -10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(a,b){if(!b)b= -this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&& -this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0]))this.offset.relative=this._getRelativeOffset(); -var f=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])f=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g- -this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;f=this.originalPageX+Math.round((f-this.originalPageX)/b.grid[0])*b.grid[0];f=this.containment?!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:!(f-this.offset.click.left<this.containment[0])?f-b.grid[0]:f+b.grid[0]:f}}return{top:g- -this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())}},_rearrange:function(a,b,c,e){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0], -this.direction=="down"?b.item[0]:b.item[0].nextSibling);this.counter=this.counter?++this.counter:1;var f=this,g=this.counter;window.setTimeout(function(){g==f.counter&&f.refreshPositions(!e)},0)},_clear:function(a,b){this.reverting=false;var c=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem);this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var e in this._storedCSS)if(this._storedCSS[e]=="auto"||this._storedCSS[e]=="static")this._storedCSS[e]= -"";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!b&&c.push(function(f){this._trigger("receive",f,this._uiHash(this.fromOutside))});if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!b)c.push(function(f){this._trigger("update",f,this._uiHash())});if(!d.ui.contains(this.element[0],this.currentItem[0])){b||c.push(function(f){this._trigger("remove", -f,this._uiHash())});for(e=this.containers.length-1;e>=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this, -this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop", -a,this._uiHash());for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}return false}b||this._trigger("beforeStop",a,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!b){for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){d.Widget.prototype._trigger.apply(this,arguments)===false&&this.cancel()}, -_uiHash:function(a){var b=a||this;return{helper:b.helper,placeholder:b.placeholder||d([]),position:b.position,originalPosition:b.originalPosition,offset:b.positionAbs,item:b.currentItem,sender:a?a.element:null}}});d.extend(d.ui.sortable,{version:"1.8.16"})})(jQuery); -;/* - * jQuery UI Autocomplete 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.position.js - */ -(function(d){var e=0;d.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.propAttr("readOnly"))){g= -false;var f=d.ui.keyCode;switch(c.keyCode){case f.PAGE_UP:a._move("previousPage",c);break;case f.PAGE_DOWN:a._move("nextPage",c);break;case f.UP:a._move("previous",c);c.preventDefault();break;case f.DOWN:a._move("next",c);c.preventDefault();break;case f.ENTER:case f.NUMPAD_ENTER:if(a.menu.active){g=true;c.preventDefault()}case f.TAB:if(!a.menu.active)return;a.menu.select(c);break;case f.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!= -a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(g){g=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)}; -this.menu=d("<ul></ul>").addClass("ui-autocomplete").appendTo(d(this.options.appendTo||"body",b)[0]).mousedown(function(c){var f=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(h){h.target!==a.element[0]&&h.target!==f&&!d.ui.contains(f,h.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,f){f=f.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:f})&&/^key/.test(c.originalEvent.type)&& -a.element.val(f.value)},selected:function(c,f){var h=f.item.data("item.autocomplete"),i=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=i;setTimeout(function(){a.previous=i;a.selectedItem=h},1)}false!==a._trigger("select",c,{item:h})&&a.element.val(h.value);a.term=a.element.val();a.close(c);a.selectedItem=h},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"); -d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&& -b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,g;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,f){f(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source==="string"){g=this.options.source;this.source=function(c,f){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:g,data:c,dataType:"json",autocompleteRequest:++e,success:function(h){this.autocompleteRequest===e&&f(h)},error:function(){this.autocompleteRequest===e&&f([])}})}}else this.source= -this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)!==false)return this._search(a)},_search:function(a){this.pending++;this.element.addClass("ui-autocomplete-loading");this.source({term:a},this.response)},_response:function(a){if(!this.options.disabled&&a&&a.length){a=this._normalize(a);this._suggest(a);this._trigger("open")}else this.close(); -this.pending--;this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this.menu.element.hide();this.menu.deactivate();this._trigger("close",a)}},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(a){if(a.length&&a[0].label&&a[0].value)return a;return d.map(a,function(b){if(typeof b==="string")return{label:b,value:b};return d.extend({label:b.label|| -b.value,value:b.value||b.label},b)})},_suggest:function(a){var b=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(b,a);this.menu.deactivate();this.menu.refresh();b.show();this._resizeMenu();b.position(d.extend({of:this.element},this.options.position));this.options.autoFocus&&this.menu.next(new d.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth(),this.element.outerWidth()))},_renderMenu:function(a,b){var g=this; -d.each(b,function(c,f){g._renderItem(a,f)})},_renderItem:function(a,b){return d("<li></li>").data("item.autocomplete",b).append(d("<a></a>").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, -"\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery); -(function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", --1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.scrollTop(),c=this.element.height();if(b<0)this.element.scrollTop(g+b);else b>=c&&this.element.scrollTop(g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); -this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0);e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b, -this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e,g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active|| -this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active|| -this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[d.fn.prop?"prop":"attr"]("scrollHeight")},select:function(e){this._trigger("selected",e,{item:this.active})}})})(jQuery); -;/* - * jQuery UI Button 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Button - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(b){var h,i,j,g,l=function(){var a=b(this).find(":ui-button");setTimeout(function(){a.button("refresh")},1)},k=function(a){var c=a.name,e=a.form,f=b([]);if(c)f=e?b(e).find("[name='"+c+"']"):b("[name='"+c+"']",a.ownerDocument).filter(function(){return!this.form});return f};b.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",l);if(typeof this.options.disabled!== -"boolean")this.options.disabled=this.element.propAttr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var a=this,c=this.options,e=this.type==="checkbox"||this.type==="radio",f="ui-state-hover"+(!e?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!c.disabled){b(this).addClass("ui-state-hover"); -this===h&&b(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){c.disabled||b(this).removeClass(f)}).bind("click.button",function(d){if(c.disabled){d.preventDefault();d.stopImmediatePropagation()}});this.element.bind("focus.button",function(){a.buttonElement.addClass("ui-state-focus")}).bind("blur.button",function(){a.buttonElement.removeClass("ui-state-focus")});if(e){this.element.bind("change.button",function(){g||a.refresh()});this.buttonElement.bind("mousedown.button",function(d){if(!c.disabled){g= -false;i=d.pageX;j=d.pageY}}).bind("mouseup.button",function(d){if(!c.disabled)if(i!==d.pageX||j!==d.pageY)g=true})}if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled||g)return false;b(this).toggleClass("ui-state-active");a.buttonElement.attr("aria-pressed",a.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",function(){if(c.disabled||g)return false;b(this).addClass("ui-state-active");a.buttonElement.attr("aria-pressed","true"); -var d=a.element[0];k(d).not(d).map(function(){return b(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;b(this).addClass("ui-state-active");h=this;b(document).one("mouseup",function(){h=null})}).bind("mouseup.button",function(){if(c.disabled)return false;b(this).removeClass("ui-state-active")}).bind("keydown.button",function(d){if(c.disabled)return false;if(d.keyCode==b.ui.keyCode.SPACE|| -d.keyCode==b.ui.keyCode.ENTER)b(this).addClass("ui-state-active")}).bind("keyup.button",function(){b(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(d){d.keyCode===b.ui.keyCode.SPACE&&b(this).click()})}this._setOption("disabled",c.disabled);this._resetButton()},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if(this.type==="checkbox"||this.type=== -"radio"){var a=this.element.parents().filter(":last"),c="label[for='"+this.element.attr("id")+"']";this.buttonElement=a.find(c);if(!this.buttonElement.length){a=a.length?a.siblings():this.element.siblings();this.buttonElement=a.filter(c);if(!this.buttonElement.length)this.buttonElement=a.find(c)}this.element.addClass("ui-helper-hidden-accessible");(a=this.element.is(":checked"))&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",a)}else this.buttonElement=this.element}, -widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());this.hasTitle||this.buttonElement.removeAttr("title"); -b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);if(a==="disabled")c?this.element.propAttr("disabled",true):this.element.propAttr("disabled",false);else this._resetButton()},refresh:function(){var a=this.element.is(":disabled");a!==this.options.disabled&&this._setOption("disabled",a);if(this.type==="radio")k(this.element[0]).each(function(){b(this).is(":checked")?b(this).button("widget").addClass("ui-state-active").attr("aria-pressed", -"true"):b(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false")},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var a=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"), -c=b("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),e=this.options.icons,f=e.primary&&e.secondary,d=[];if(e.primary||e.secondary){if(this.options.text)d.push("ui-button-text-icon"+(f?"s":e.primary?"-primary":"-secondary"));e.primary&&a.prepend("<span class='ui-button-icon-primary ui-icon "+e.primary+"'></span>");e.secondary&&a.append("<span class='ui-button-icon-secondary ui-icon "+e.secondary+"'></span>");if(!this.options.text){d.push(f?"ui-button-icons-only": -"ui-button-icon-only");this.hasTitle||a.attr("title",c)}}else d.push("ui-button-text-only");a.addClass(d.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){a==="disabled"&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a=this.element.css("direction")=== -"ltr";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); -b.Widget.prototype.destroy.call(this)}})})(jQuery); -;/* - * jQuery UI Dialog 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.button.js - * jquery.ui.draggable.js - * jquery.ui.mouse.js - * jquery.ui.position.js - * jquery.ui.resizable.js - */ -(function(c,l){var m={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},n={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},o=c.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false, -position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ -b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&!i.isDefaultPrevented()&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), -h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id", -e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); -a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== -b.uiDialog[0]){e=c(this).css("z-index");isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()};c.ui.dialog.maxZ+=1; -d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== -f[0]&&e.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a, -function(){return!(d=true)});if(d){c.each(a,function(f,h){h=c.isFunction(h)?{click:h,text:f}:h;var i=c('<button type="button"></button>').click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.each(h,function(j,k){if(j!=="click")j in o?i[j](k):i.attr(j,k)});c.fn.button&&i.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", -handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition, -originalSize:f.originalSize,position:f.position,size:f.size}}a=a===l?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize", -f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "): -[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f); -if(g in m)e=true;if(g in n)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"): -e.removeClass("ui-dialog-disabled");break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a= -this.options,b,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height- -b,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.16",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), -create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()<c.ui.dialog.overlay.maxZ)return false})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&!d.isDefaultPrevented()&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()|| -c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&& -c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<b?c(window).width()+"px":a+"px"}else return c(document).width()+ -"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,function(){a=a.add(this)});a.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery); -;/* - * jQuery UI Slider 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Slider - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var a=this,b=this.options,c=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f=b.values&&b.values.length||1,e=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+ -this.orientation+" ui-widget ui-widget-content ui-corner-all"+(b.disabled?" ui-slider-disabled ui-disabled":""));this.range=d([]);if(b.range){if(b.range===true){if(!b.values)b.values=[this._valueMin(),this._valueMin()];if(b.values.length&&b.values.length!==2)b.values=[b.values[0],b.values[0]]}this.range=d("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(b.range==="min"||b.range==="max"?" ui-slider-range-"+b.range:""))}for(var j=c.length;j<f;j+=1)e.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>"); -this.handles=c.add(d(e.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle", -g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!a.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");i=a._start(g,l);if(i===false)return}break}m=a.options.step;i=a.options.values&&a.options.values.length? -(h=a.values(l)):(h=a.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=a._valueMin();break;case d.ui.keyCode.END:h=a._valueMax();break;case d.ui.keyCode.PAGE_UP:h=a._trimAlignValue(i+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(i-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===a._valueMax())return;h=a._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===a._valueMin())return;h=a._trimAlignValue(i- -m);break}a._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(g,k);a._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy(); -return this},_mouseCapture:function(a){var b=this.options,c,f,e,j,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(b.range===true&&this.values(1)===b.min){g+=1;e=d(this.handles[g])}if(this._start(a,g)===false)return false; -this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();b=e.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-e.width()/2,top:a.pageY-b.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b= -this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b= -this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b); -c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var f;if(this.options.values&&this.options.values.length){f=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>f||b===1&&c<f))c=f;if(c!==this.values(b)){f=this.values();f[b]=c;a=this._trigger("slide",a,{handle:this.handles[b],value:c,values:f});this.values(b?0:1);a!==false&&this.values(b,c,true)}}else if(c!==this.value()){a=this._trigger("slide",a,{handle:this.handles[b],value:c}); -a!==false&&this.value(c)}},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("change",a,c)}},value:function(a){if(arguments.length){this.options.value= -this._trimAlignValue(a);this._refreshValue();this._change(null,0)}else return this._value()},values:function(a,b){var c,f,e;if(arguments.length>1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e<c.length;e+=1){c[e]=this._trimAlignValue(f[e]);this._change(null,e)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(a): -this.value();else return this._values()},_setOption:function(a,b){var c,f=0;if(d.isArray(this.options.values))f=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(a){case "disabled":if(b){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.propAttr("disabled",true);this.element.addClass("ui-disabled")}else{this.handles.propAttr("disabled",false);this.element.removeClass("ui-disabled")}break;case "orientation":this._detectOrientation(); -this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<f;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var a=this.options.value;return a=this._trimAlignValue(a)},_values:function(a){var b,c;if(arguments.length){b=this.options.values[a]; -return b=this._trimAlignValue(b)}else{b=this.options.values.slice();for(c=0;c<b.length;c+=1)b[c]=this._trimAlignValue(b[c]);return b}},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a= -this.options.range,b=this.options,c=this,f=!this._animateOff?b.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({width:e- -g+"%"},{queue:false,duration:b.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:b.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[f?"animate":"css"]({width:e+"%"}, -b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.16"})})(jQuery); -;/* - * jQuery UI Tabs 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading…</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&& -e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b= -d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| -(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); -this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= -this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); -if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); -this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+ -g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal", -function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")}; -this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected= --1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; -d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e= -d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b, -e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]); -j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove(); -if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=b}),function(h){return h>=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null, -this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this}, -load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c, -"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, -url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.16"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k<a.anchors.length?k:0)},b);j&&j.stopPropagation()});e=a._unrotate||(a._unrotate=!e?function(j){j.clientX&& -a.rotate(null)}:function(){t=c.selected;h()});if(b){this.element.bind("tabsshow",h);this.anchors.bind(c.event+".tabs",e);h()}else{clearTimeout(a.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(c.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery); -;/* - * jQuery UI Datepicker 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Datepicker - * - * Depends: - * jquery.ui.core.js - */ -(function(d,C){function M(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass= -"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su", -"Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10", -minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false,disabled:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=N(d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function N(a){return a.bind("mouseout", -function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");b.length&&b.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(d.datepicker._isDisabledDatepicker(J.inline?a.parent()[0]:J.input[0])||!b.length)){b.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"); -b.addClass("ui-state-hover");b.hasClass("ui-datepicker-prev")&&b.addClass("ui-datepicker-prev-hover");b.hasClass("ui-datepicker-next")&&b.addClass("ui-datepicker-next-hover")}})}function H(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==C)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.16"}});var B=(new Date).getTime(),J;d.extend(M.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv}, -setDefaults:function(a){H(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g, -"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:N(d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker", -function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b);b.settings.disabled&&this._disableDatepicker(a)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c== -"focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker(): -d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a, -b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.settings.disabled&&this._disableDatepicker(a);b.dpDiv.css("display","block")}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+= -1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/ -2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b= -d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e= -a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a, -"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f== -a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"? -d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&this._hideDatepicker();var h=this._getDateDatepicker(a,true),i=this._getMinMaxDate(e,"min"),g=this._getMinMaxDate(e,"max");H(e.settings,f);if(i!==null&&f.dateFormat!==C&&f.minDate===C)e.settings.minDate=this._formatDate(e,i);if(g!==null&&f.dateFormat!==C&&f.maxDate===C)e.settings.maxDate=this._formatDate(e,g);this._attachments(d(a),e);this._autoSize(e);this._setDate(e,h);this._updateAlternate(e); -this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl"); -b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass+":not(."+d.datepicker._currentClass+")",b.dpDiv);c[0]&&d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]);if(a=d.datepicker._get(b,"onSelect")){c=d.datepicker._formatDate(b);a.apply(b.input?b.input[0]:null,[c,b])}else d.datepicker._hideDatepicker();return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target, -a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c= -a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b, -"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));var c=String.fromCharCode(a.charCode==C?a.keyCode:a.charCode); -return a.ctrlKey||a.metaKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input", -a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);if(d.datepicker._curInst&&d.datepicker._curInst!=b){d.datepicker._datepickerShowing&&d.datepicker._triggerOnClose(d.datepicker._curInst);d.datepicker._curInst.dpDiv.stop(true,true)}var c=d.datepicker._get(b,"beforeShow");c=c?c.apply(a,[a,b]):{};if(c!==false){H(b.settings,c);b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value= -"";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b); -c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing= -true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}}},_updateDatepicker:function(a){this.maxRows=4;var b=d.datepicker._getBorders(a.dpDiv);J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}); -a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&& -!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(), -h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b= -this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");if(b)b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b); -this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();d.datepicker._triggerOnClose(b);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, -_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"): -0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e["selected"+(c=="M"? -"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a); -this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField"); -if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"? -b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=A+1<a.length&&a.charAt(A+1)==p)&&A++;return p},m=function(p){var D= -o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"&&D?4:p=="o"?3:2)+"}");p=b.substring(q).match(p);if(!p)throw"Missing number at position "+q;q+=p[0].length;return parseInt(p[0],10)},n=function(p,D,K){p=d.map(o(p)?K:D,function(w,x){return[[x,w]]}).sort(function(w,x){return-(w[1].length-x[1].length)});var E=-1;d.each(p,function(w,x){w=x[1];if(b.substr(q,w.length).toLowerCase()==w.toLowerCase()){E=x[0];q+=w.length;return false}});if(E!=-1)return E+1;else throw"Unknown name at position "+q;},s= -function(){if(b.charAt(q)!=a.charAt(A))throw"Unexpected literal at position "+q;q++},q=0,A=0;A<a.length;A++)if(k)if(a.charAt(A)=="'"&&!o("'"))k=false;else s();else switch(a.charAt(A)){case "d":l=m("d");break;case "D":n("D",f,h);break;case "o":u=m("o");break;case "m":j=m("m");break;case "M":j=n("M",i,g);break;case "y":c=m("y");break;case "@":var v=new Date(m("@"));c=v.getFullYear();j=v.getMonth()+1;l=v.getDate();break;case "!":v=new Date((m("!")-this._ticksTo1970)/1E4);c=v.getFullYear();j=v.getMonth()+ -1;l=v.getDate();break;case "'":if(o("'"))s();else k=true;break;default:s()}if(q<b.length)throw"Extra/unparsed characters found in date: "+b.substring(q);if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd", -COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames: -null)||this._defaults.monthNames;var i=function(o){(o=k+1<a.length&&a.charAt(k+1)==o)&&k++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},j=function(o,m,n,s){return i(o)?s[m]:n[m]},l="",u=false;if(b)for(var k=0;k<a.length;k++)if(u)if(a.charAt(k)=="'"&&!i("'"))u=false;else l+=a.charAt(k);else switch(a.charAt(k)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=j("D",b.getDay(),e,f);break;case "o":l+=g("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()- -(new Date(b.getFullYear(),0,0)).getTime())/864E5),3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=j("M",b.getMonth(),h,c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(k)}return l},_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+1)==h)&&f++;return h},f= -0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+="0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==C?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,f,h;f=h=this._getDefaultDate(a); -var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var e=function(h){var i=new Date; -i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,j=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,k=u.exec(h);k;){switch(k[2]||"d"){case "d":case "D":g+=parseInt(k[1],10);break;case "w":case "W":g+=parseInt(k[1],10)*7;break;case "m":case "M":l+=parseInt(k[1],10);g= -Math.min(g,d.datepicker._getDaysInMonth(j,l));break;case "y":case "Y":j+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break}k=u.exec(h)}return new Date(j,l,g)};if(b=(b=b==null||b===""?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):new Date(b.getTime()))&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()> -12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&& -a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay? -new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&n<k?k:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a)); -n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+B+".datepicker._adjustDate('#"+a.id+"', -"+j+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var s=this._get(a,"nextText");s=!h?s:this.formatDate(s,this._daylightSavingAdjust(new Date(m, -g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+B+".datepicker._adjustDate('#"+a.id+"', +"+j+", 'M');\" title=\""+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>";j=this._get(a,"currentText");s=this._get(a,"gotoCurrent")&& -a.currentDay?u:b;j=!h?j:this.formatDate(j,s,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+B+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,s)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+ -B+".datepicker._gotoToday('#"+a.id+"');\">"+j+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");s=this._get(a,"dayNames");this._get(a,"dayNamesShort");var q=this._get(a,"dayNamesMin"),A=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),D=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x<i[0];x++){var O= -"";this.maxRows=4;for(var G=0;G<i[1];G++){var P=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",y="";if(l){y+='<div class="ui-datepicker-group';if(i[1]>1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&& -x==0?c?f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,A,v)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var z=j?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var r=(t+h)%7;z+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+s[r]+'">'+q[r]+"</span></th>"}y+=z+"</tr></thead><tbody>";z=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay, -z);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;z=Math.ceil((t+z)/7);this.maxRows=z=l?this.maxRows>z?this.maxRows:z:z;r=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q<z;Q++){y+="<tr>";var R=!j?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(r)+"</td>";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[r]):[true,""],F=r.getMonth()!=g,L=F&&!K||!I[0]||k&&r<k||o&&r>o;R+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(r.getTime()== -P.getTime()&&g==a.selectedMonth&&a._keyEvent||E.getTime()==r.getTime()&&E.getTime()==P.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!D?"":" "+I[1]+(r.getTime()==u.getTime()?" "+this._currentClass:"")+(r.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!F||D)&&I[2]?' title="'+I[2]+'"':"")+(L?"":' onclick="DP_jQuery_'+B+".datepicker._selectDay('#"+a.id+"',"+r.getMonth()+","+r.getFullYear()+', this);return false;"')+">"+(F&&!D?" ":L?'<span class="ui-state-default">'+ -r.getDate()+"</span>":'<a class="ui-state-default'+(r.getTime()==b.getTime()?" ui-state-highlight":"")+(r.getTime()==u.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+'" href="#">'+r.getDate()+"</a>")+"</td>";r.setDate(r.getDate()+1);r=this._daylightSavingAdjust(r)}y+=R+"</tr>"}g++;if(g>11){g=0;m++}y+="</tbody></table>"+(l?"</div>"+(i[0]>0&&G==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>': -"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='<div class="ui-datepicker-title">',o="";if(h||!j)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+B+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" >";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&& -(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(k+=o+(h||!(j&&l)?" ":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var s=(new Date).getFullYear();i=function(q){q=q.match(/c[+-].*/)?c+parseInt(q.substring(1),10):q.match(/[+-].*/)?s+parseInt(q,10):parseInt(q,10);return isNaN(q)?s:q};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b, -e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+B+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" >";b<=g;b++)a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";a.yearshtml+="</select>";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="</div>";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c=="Y"?b:0),f=a.drawMonth+ -(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");if(b)b.apply(a.input? -a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);c=this._daylightSavingAdjust(new Date(c, -e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a, -"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=function(a){if(!this.length)return this; -if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));return this.each(function(){typeof a== -"string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.16";window["DP_jQuery_"+B]=d})(jQuery); -;/* - * jQuery UI Progressbar 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); -this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* -this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.16"})})(jQuery); -;/* - * jQuery UI Effects 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/ - */ -jQuery.effects||function(f,j){function m(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], -16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return n.transparent;return n[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return m(b)}function o(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, -a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function p(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= -a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function l(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", -"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=m(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var n={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, -0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211, -211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},q=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, -d){if(f.isFunction(b)){d=b;b=null}return this.queue(function(){var e=f(this),g=e.attr("style")||" ",h=p(o.call(this)),r,v=e.attr("class");f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});r=p(o.call(this));e.attr("class",v);e.animate(u(h,r),{queue:false,duration:a,easing:b,complete:function(){f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments);f.dequeue(this)}})})}; -f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this, -[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.16",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,a){var b;switch(c[0]){case "top":b= -0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}), -d=document.activeElement;c.wrap(b);if(c[0]===d||f.contains(c[0],d))f(d).focus();b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(e,g){a[g]=c.css(g);if(isNaN(parseInt(a[g],10)))a[g]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){var a,b=document.activeElement; -if(c.parent().is(".ui-effects-wrapper")){a=c.parent().replaceWith(c);if(c[0]===b||f.contains(c[0],b))f(b).focus();return a}return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)}); -return d.call(this,b)},_show:f.fn.show,show:function(c){if(l(c))return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(l(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(l(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this, -arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/ -2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b, -d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c, -a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b, -d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,a,b,d,e){c=1.70158;var g= -0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158; -if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c, -a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery); -;/* - * jQuery UI Effects Blind 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Blind - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.blind=function(c){return this.queue(function(){var a=b(this),g=["position","top","bottom","left","right"],f=b.effects.setMode(a,c.options.mode||"hide"),d=c.options.direction||"vertical";b.effects.save(a,g);a.show();var e=b.effects.createWrapper(a).css({overflow:"hidden"}),h=d=="vertical"?"height":"width";d=d=="vertical"?e.height():e.width();f=="show"&&e.css(h,0);var i={};i[h]=f=="show"?d:0;e.animate(i,c.duration,c.options.easing,function(){f=="hide"&&a.hide();b.effects.restore(a, -g);b.effects.removeWrapper(a);c.callback&&c.callback.apply(a[0],arguments);a.dequeue()})})}})(jQuery); -;/* - * jQuery UI Effects Bounce 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Bounce - * - * Depends: - * jquery.effects.core.js - */ -(function(e){e.effects.bounce=function(b){return this.queue(function(){var a=e(this),l=["position","top","bottom","left","right"],h=e.effects.setMode(a,b.options.mode||"effect"),d=b.options.direction||"up",c=b.options.distance||20,m=b.options.times||5,i=b.duration||250;/show|hide/.test(h)&&l.push("opacity");e.effects.save(a,l);a.show();e.effects.createWrapper(a);var f=d=="up"||d=="down"?"top":"left";d=d=="up"||d=="left"?"pos":"neg";c=b.options.distance||(f=="top"?a.outerHeight({margin:true})/3:a.outerWidth({margin:true})/ -3);if(h=="show")a.css("opacity",0).css(f,d=="pos"?-c:c);if(h=="hide")c/=m*2;h!="hide"&&m--;if(h=="show"){var g={opacity:1};g[f]=(d=="pos"?"+=":"-=")+c;a.animate(g,i/2,b.options.easing);c/=2;m--}for(g=0;g<m;g++){var j={},k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing);c=h=="hide"?c*2:c/2}if(h=="hide"){g={opacity:0};g[f]=(d=="pos"?"-=":"+=")+c;a.animate(g,i/2,b.options.easing,function(){a.hide();e.effects.restore(a,l);e.effects.removeWrapper(a); -b.callback&&b.callback.apply(this,arguments)})}else{j={};k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing,function(){e.effects.restore(a,l);e.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments)})}a.queue("fx",function(){a.dequeue()});a.dequeue()})}})(jQuery); -;/* - * jQuery UI Effects Clip 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Clip - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.clip=function(e){return this.queue(function(){var a=b(this),i=["position","top","bottom","left","right","height","width"],f=b.effects.setMode(a,e.options.mode||"hide"),c=e.options.direction||"vertical";b.effects.save(a,i);a.show();var d=b.effects.createWrapper(a).css({overflow:"hidden"});d=a[0].tagName=="IMG"?d:a;var g={size:c=="vertical"?"height":"width",position:c=="vertical"?"top":"left"};c=c=="vertical"?d.height():d.width();if(f=="show"){d.css(g.size,0);d.css(g.position, -c/2)}var h={};h[g.size]=f=="show"?c:0;h[g.position]=f=="show"?0:c/2;d.animate(h,{queue:false,duration:e.duration,easing:e.options.easing,complete:function(){f=="hide"&&a.hide();b.effects.restore(a,i);b.effects.removeWrapper(a);e.callback&&e.callback.apply(a[0],arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Drop 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Drop - * - * Depends: - * jquery.effects.core.js - */ -(function(c){c.effects.drop=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right","opacity"],e=c.effects.setMode(a,d.options.mode||"hide"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a);var f=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var g=d.options.distance||(f=="top"?a.outerHeight({margin:true})/2:a.outerWidth({margin:true})/2);if(e=="show")a.css("opacity",0).css(f,b=="pos"?-g:g);var i={opacity:e== -"show"?1:0};i[f]=(e=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+g;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){e=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Explode 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Explode - * - * Depends: - * jquery.effects.core.js - */ -(function(j){j.effects.explode=function(a){return this.queue(function(){var c=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3,d=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3;a.options.mode=a.options.mode=="toggle"?j(this).is(":visible")?"hide":"show":a.options.mode;var b=j(this).show().css("visibility","hidden"),g=b.offset();g.top-=parseInt(b.css("marginTop"),10)||0;g.left-=parseInt(b.css("marginLeft"),10)||0;for(var h=b.outerWidth(true),i=b.outerHeight(true),e=0;e<c;e++)for(var f= -0;f<d;f++)b.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ -e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); -;/* - * jQuery UI Effects Fade 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Fade - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Fold 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Fold - * - * Depends: - * jquery.effects.core.js - */ -(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1], -10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); -;/* - * jQuery UI Effects Highlight 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Highlight - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& -this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Pulsate 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Pulsate - * - * Depends: - * jquery.effects.core.js - */ -(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c<times;c++){b.animate({opacity:animateTo},duration,a.options.easing);animateTo=(animateTo+1)%2}b.animate({opacity:animateTo},duration, -a.options.easing,function(){animateTo==0&&b.hide();a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()}).dequeue()})}})(jQuery); -;/* - * jQuery UI Effects Scale 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Scale - * - * Depends: - * jquery.effects.core.js - */ -(function(c){c.effects.puff=function(b){return this.queue(function(){var a=c(this),e=c.effects.setMode(a,b.options.mode||"hide"),g=parseInt(b.options.percent,10)||150,h=g/100,i={height:a.height(),width:a.width()};c.extend(b.options,{fade:true,mode:e,percent:e=="hide"?g:100,from:e=="hide"?i:{height:i.height*h,width:i.width*h}});a.effect("scale",b.options,b.duration,b.callback);a.dequeue()})};c.effects.scale=function(b){return this.queue(function(){var a=c(this),e=c.extend(true,{},b.options),g=c.effects.setMode(a, -b.options.mode||"effect"),h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:g=="hide"?0:100),i=b.options.direction||"both",f=b.options.origin;if(g!="effect"){e.origin=f||["middle","center"];e.restore=true}f={height:a.height(),width:a.width()};a.from=b.options.from||(g=="show"?{height:0,width:0}:f);h={y:i!="horizontal"?h/100:1,x:i!="vertical"?h/100:1};a.to={height:f.height*h.y,width:f.width*h.x};if(b.options.fade){if(g=="show"){a.from.opacity=0;a.to.opacity=1}if(g=="hide"){a.from.opacity= -1;a.to.opacity=0}}e.from=a.from;e.to=a.to;e.mode=g;a.effect("size",e,b.duration,b.callback);a.dequeue()})};c.effects.size=function(b){return this.queue(function(){var a=c(this),e=["position","top","bottom","left","right","width","height","overflow","opacity"],g=["position","top","bottom","left","right","overflow","opacity"],h=["width","height","overflow"],i=["fontSize"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],k=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"], -p=c.effects.setMode(a,b.options.mode||"effect"),n=b.options.restore||false,m=b.options.scale||"both",l=b.options.origin,j={height:a.height(),width:a.width()};a.from=b.options.from||j;a.to=b.options.to||j;if(l){l=c.effects.getBaseline(l,j);a.from.top=(j.height-a.from.height)*l.y;a.from.left=(j.width-a.from.width)*l.x;a.to.top=(j.height-a.to.height)*l.y;a.to.left=(j.width-a.to.width)*l.x}var d={from:{y:a.from.height/j.height,x:a.from.width/j.width},to:{y:a.to.height/j.height,x:a.to.width/j.width}}; -if(m=="box"||m=="both"){if(d.from.y!=d.to.y){e=e.concat(f);a.from=c.effects.setTransition(a,f,d.from.y,a.from);a.to=c.effects.setTransition(a,f,d.to.y,a.to)}if(d.from.x!=d.to.x){e=e.concat(k);a.from=c.effects.setTransition(a,k,d.from.x,a.from);a.to=c.effects.setTransition(a,k,d.to.x,a.to)}}if(m=="content"||m=="both")if(d.from.y!=d.to.y){e=e.concat(i);a.from=c.effects.setTransition(a,i,d.from.y,a.from);a.to=c.effects.setTransition(a,i,d.to.y,a.to)}c.effects.save(a,n?e:g);a.show();c.effects.createWrapper(a); -a.css("overflow","hidden").css(a.from);if(m=="content"||m=="both"){f=f.concat(["marginTop","marginBottom"]).concat(i);k=k.concat(["marginLeft","marginRight"]);h=e.concat(f).concat(k);a.find("*[width]").each(function(){child=c(this);n&&c.effects.save(child,h);var o={height:child.height(),width:child.width()};child.from={height:o.height*d.from.y,width:o.width*d.from.x};child.to={height:o.height*d.to.y,width:o.width*d.to.x};if(d.from.y!=d.to.y){child.from=c.effects.setTransition(child,f,d.from.y,child.from); -child.to=c.effects.setTransition(child,f,d.to.y,child.to)}if(d.from.x!=d.to.x){child.from=c.effects.setTransition(child,k,d.from.x,child.from);child.to=c.effects.setTransition(child,k,d.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){n&&c.effects.restore(child,h)})})}a.animate(a.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){a.to.opacity===0&&a.css("opacity",a.from.opacity);p=="hide"&&a.hide();c.effects.restore(a, -n?e:g);c.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Shake 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Shake - * - * Depends: - * jquery.effects.core.js - */ -(function(d){d.effects.shake=function(a){return this.queue(function(){var b=d(this),j=["position","top","bottom","left","right"];d.effects.setMode(b,a.options.mode||"effect");var c=a.options.direction||"left",e=a.options.distance||20,l=a.options.times||3,f=a.duration||a.options.duration||140;d.effects.save(b,j);b.show();d.effects.createWrapper(b);var g=c=="up"||c=="down"?"top":"left",h=c=="up"||c=="left"?"pos":"neg";c={};var i={},k={};c[g]=(h=="pos"?"-=":"+=")+e;i[g]=(h=="pos"?"+=":"-=")+e*2;k[g]= -(h=="pos"?"-=":"+=")+e*2;b.animate(c,f,a.options.easing);for(e=1;e<l;e++)b.animate(i,f,a.options.easing).animate(k,f,a.options.easing);b.animate(i,f,a.options.easing).animate(c,f/2,a.options.easing,function(){d.effects.restore(b,j);d.effects.removeWrapper(b);a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()});b.dequeue()})}})(jQuery); -;/* - * jQuery UI Effects Slide 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Slide - * - * Depends: - * jquery.effects.core.js - */ -(function(c){c.effects.slide=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right"],f=c.effects.setMode(a,d.options.mode||"show"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a).css({overflow:"hidden"});var g=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var e=d.options.distance||(g=="top"?a.outerHeight({margin:true}):a.outerWidth({margin:true}));if(f=="show")a.css(g,b=="pos"?isNaN(e)?"-"+e:-e:e); -var i={};i[g]=(f=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+e;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){f=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Transfer 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Transfer - * - * Depends: - * jquery.effects.core.js - */ -(function(e){e.effects.transfer=function(a){return this.queue(function(){var b=e(this),c=e(a.options.to),d=c.offset();c={top:d.top,left:d.left,height:c.innerHeight(),width:c.innerWidth()};d=b.offset();var f=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); -b.dequeue()})})}})(jQuery); -;
\ No newline at end of file diff --git a/core/js/js.js b/core/js/js.js index 6241036b1b8..01e47edf268 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -37,14 +37,14 @@ function t(app,text, vars){ t.cache[app] = []; } } - var _build = function(text, vars) { - return text.replace(/{([^{}]*)}/g, - function (a, b) { - var r = vars[b]; - return typeof r === 'string' || typeof r === 'number' ? r : a; - } - ); - } + var _build = function (text, vars) { + return text.replace(/{([^{}]*)}/g, + function (a, b) { + var r = vars[b]; + return typeof r === 'string' || typeof r === 'number' ? r : a; + } + ); + }; if( typeof( t.cache[app][text] ) !== 'undefined' ){ if(typeof vars === 'object') { return _build(t.cache[app][text], vars); @@ -101,6 +101,27 @@ var OC={ return OC.filePath(app,'',file); }, /** + * Creates an url for remote use + * @param string $service id + * @return string the url + * + * Returns a url to the given service. + */ + linkToRemoteBase:function(service) { + return OC.webroot + '/remote.php/' + service; + }, + /** + * @brief Creates an absolute url for remote use + * @param string $service id + * @param bool $add_slash + * @return string the url + * + * Returns a absolute url to the given service. + */ + linkToRemote:function(service) { + return window.location.protocol + '//' + window.location.host + OC.linkToRemoteBase(service); + }, + /** * get the absolute url for a file in an app * @param app the id of the app * @param type the type of the file to link to (e.g. css,img,ajax.template) @@ -247,7 +268,7 @@ var OC={ var popup = $('#appsettings_popup'); if(popup.length == 0) { $('body').prepend('<div class="popup hidden" id="appsettings_popup"></div>'); - popup = $('#appsettings_popup'); + popup = $('#appsettings_popup'); popup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft'); } if(popup.is(':visible')) { @@ -289,6 +310,41 @@ OC.search.lastResults={}; OC.addStyle.loaded=[]; OC.addScript.loaded=[]; +OC.Notification={ + getDefaultNotificationFunction: null, + setDefault: function(callback) { + OC.Notification.getDefaultNotificationFunction = callback; + }, + hide: function(callback) { + $("#notification").text(''); + $('#notification').fadeOut('400', function(){ + if (OC.Notification.isHidden()) { + if (OC.Notification.getDefaultNotificationFunction) { + OC.Notification.getDefaultNotificationFunction.call(); + } + } + if (callback) { + callback.call(); + } + }); + }, + showHtml: function(html) { + var notification = $('#notification'); + notification.hide(); + notification.html(html); + notification.fadeIn().css("display","inline"); + }, + show: function(text) { + var notification = $('#notification'); + notification.hide(); + notification.text(text); + notification.fadeIn().css("display","inline"); + }, + isHidden: function() { + return ($("#notification").text() === ''); + } +}; + OC.Breadcrumb={ container:null, crumbs:[], diff --git a/core/js/oc-requesttoken.js b/core/js/oc-requesttoken.js new file mode 100644 index 00000000000..f4cf286b8aa --- /dev/null +++ b/core/js/oc-requesttoken.js @@ -0,0 +1,3 @@ +$(document).bind('ajaxSend', function(elm, xhr, s) { + xhr.setRequestHeader('requesttoken', oc_requesttoken); +});
\ No newline at end of file diff --git a/core/js/setup.js b/core/js/setup.js index 39fcf4a2715..9aded6591ca 100644 --- a/core/js/setup.js +++ b/core/js/setup.js @@ -52,11 +52,12 @@ $(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').button('disable'); + // $('label.ui-button', this).addClass('ui-state-disabled').attr('aria-disabled', 'true').button('disable'); // Create the form var form = $('<form>'); diff --git a/core/js/share.js b/core/js/share.js index bb3ec010ff5..0c45765bd8b 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -23,7 +23,10 @@ OC.Share={ } else { var file = $('tr').filterAttr('data-file', OC.basename(item)); if (file.length > 0) { - $(file).find('.fileactions .action').filterAttr('data-action', 'Share').find('img').attr('src', image); + var action = $(file).find('.fileactions .action').filterAttr('data-action', 'Share'); + action.find('img').attr('src', image); + action.addClass('permanent'); + action.html(action.html().replace(t('core', 'Share'), t('core', 'Shared'))); } var dir = $('#dir').val(); if (dir.length > 1) { @@ -32,9 +35,12 @@ OC.Share={ // Search for possible parent folders that are shared while (path != last) { if (path == item) { - var img = $('.fileactions .action').filterAttr('data-action', 'Share').find('img'); + var action = $('.fileactions .action').filterAttr('data-action', 'Share'); + var img = action.find('img'); if (img.attr('src') != OC.imagePath('core', 'actions/public')) { img.attr('src', image); + action.addClass('permanent'); + action.html(action.html().replace(t('core', 'Share'), t('core', 'Shared'))); } } last = path; @@ -48,7 +54,8 @@ OC.Share={ }, updateIcon:function(itemType, itemSource) { if (itemType == 'file' || itemType == 'folder') { - var filename = $('tr').filterAttr('data-id', String(itemSource)).data('file'); + var file = $('tr').filterAttr('data-id', String(itemSource)); + var filename = file.data('file'); if ($('#dir').val() == '/') { itemSource = $('#dir').val() + filename; } else { @@ -75,6 +82,16 @@ OC.Share={ }); if (itemType != 'file' && itemType != 'folder') { $('a.share[data-item="'+itemSource+'"]').css('background', 'url('+image+') no-repeat center'); + } else { + var action = $(file).find('.fileactions .action').filterAttr('data-action', 'Share'); + action.find('img').attr('src', image); + if (shares) { + action.addClass('permanent'); + action.html(action.html().replace(t('core', 'Share'), t('core', 'Shared'))); + } else { + action.removeClass('permanent'); + action.html(action.html().replace(t('core', 'Shared'), t('core', 'Share'))); + } } if (shares) { OC.Share.statuses[itemSource] = link; @@ -148,9 +165,9 @@ OC.Share={ var html = '<div id="dropdown" class="drop" data-item-type="'+itemType+'" data-item-source="'+itemSource+'">'; if (data !== false && data.reshare !== false && data.reshare.uid_owner !== undefined) { if (data.reshare.share_type == OC.Share.SHARE_TYPE_GROUP) { - html += '<span class="reshare">'+t('core', 'Shared with you and the group {group} by {owner}', {group: data.reshare.share_with, owner: data.reshare.uid_owner})+'</span>'; + html += '<span class="reshare">'+t('core', 'Shared with you and the group {group} by {owner}', {group: data.reshare.share_with, owner: data.reshare.displayname_owner})+'</span>'; } else { - html += '<span class="reshare">'+t('core', 'Shared with you by {owner}', {owner: data.reshare.uid_owner})+'</span>'; + html += '<span class="reshare">'+t('core', 'Shared with you by {owner}', {owner: data.reshare.displayname_owner})+'</span>'; } html += '<br />'; } @@ -186,9 +203,9 @@ OC.Share={ OC.Share.showLink(share.token, share.share_with, itemSource); } else { if (share.collection) { - OC.Share.addShareWith(share.share_type, share.share_with, share.permissions, possiblePermissions, share.collection); + OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, share.collection); } else { - OC.Share.addShareWith(share.share_type, share.share_with, share.permissions, possiblePermissions, false); + OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, false); } } if (share.expiration != null) { @@ -228,7 +245,7 @@ OC.Share={ // Default permissions are Read and Share var permissions = OC.PERMISSION_READ | OC.PERMISSION_SHARE; OC.Share.share(itemType, itemSource, shareType, shareWith, permissions, function() { - OC.Share.addShareWith(shareType, shareWith, permissions, possiblePermissions); + OC.Share.addShareWith(shareType, shareWith, selected.item.label, permissions, possiblePermissions); $('#shareWith').val(''); OC.Share.updateIcon(itemType, itemSource); }); @@ -257,7 +274,7 @@ OC.Share={ } }); }, - addShareWith:function(shareType, shareWith, permissions, possiblePermissions, collection) { + addShareWith:function(shareType, shareWith, shareWithDisplayName, permissions, possiblePermissions, collection) { if (!OC.Share.itemShares[shareType]) { OC.Share.itemShares[shareType] = []; } @@ -272,7 +289,7 @@ OC.Share={ if (collectionList.length > 0) { $(collectionList).append(', '+shareWith); } else { - var html = '<li style="clear: both;" data-collection="'+item+'">'+t('core', 'Shared in {item} with {user}', {'item': item, user: shareWith})+'</li>'; + var html = '<li style="clear: both;" data-collection="'+item+'">'+t('core', 'Shared in {item} with {user}', {'item': item, user: shareWithDisplayName})+'</li>'; $('#shareWithList').prepend(html); } } else { @@ -295,9 +312,9 @@ OC.Share={ var html = '<li style="clear: both;" data-share-type="'+shareType+'" data-share-with="'+shareWith+'" title="' + shareWith + '">'; html += '<a href="#" class="unshare" style="display:none;"><img class="svg" alt="'+t('core', 'Unshare')+'" src="'+OC.imagePath('core', 'actions/delete')+'"/></a>'; if(shareWith.length > 14){ - html += shareWith.substr(0,11) + '...'; + html += shareWithDisplayName.substr(0,11) + '...'; }else{ - html += shareWith; + html += shareWithDisplayName; } if (possiblePermissions & OC.PERMISSION_CREATE || possiblePermissions & OC.PERMISSION_UPDATE || possiblePermissions & OC.PERMISSION_DELETE) { if (editChecked == '') { diff --git a/core/js/update.js b/core/js/update.js new file mode 100644 index 00000000000..8ab02bbf935 --- /dev/null +++ b/core/js/update.js @@ -0,0 +1,23 @@ +$(document).ready(function () { + var updateEventSource = new OC.EventSource(OC.webroot+'/core/ajax/update.php'); + updateEventSource.listen('success', function(message) { + $('<span>').append(message).append('<br />').appendTo($('.update')); + }); + updateEventSource.listen('error', function(message) { + $('<span>').addClass('error').append(message).append('<br />').appendTo($('.update')); + }); + updateEventSource.listen('failure', function(message) { + $('<span>').addClass('error').append(message).append('<br />').appendTo($('.update')); + $('<span>') + .addClass('error bold') + .append('<br />') + .append(t('core', 'The update was unsuccessful. Please report this issue to the <a href="https://github.com/owncloud/core/issues" target="_blank">ownCloud community</a>.')) + .appendTo($('.update')); + }); + updateEventSource.listen('done', function(message) { + $('<span>').addClass('bold').append('<br />').append(t('core', 'The update was successful. Redirecting you to ownCloud now.')).appendTo($('.update')); + setTimeout(function () { + window.location.href = OC.webroot; + }, 3000); + }); +});
\ No newline at end of file diff --git a/core/js/visitortimezone.js b/core/js/visitortimezone.js new file mode 100644 index 00000000000..58a1e9ea355 --- /dev/null +++ b/core/js/visitortimezone.js @@ -0,0 +1,4 @@ +$(document).ready(function () { + var visitortimezone = (-new Date().getTimezoneOffset() / 60); + $('#timezone-offset').val(visitortimezone); +});
\ No newline at end of file diff --git a/core/l10n/ar.php b/core/l10n/ar.php index 38450f8d54f..218eeed0722 100644 --- a/core/l10n/ar.php +++ b/core/l10n/ar.php @@ -2,6 +2,25 @@ "No category to add?" => "ألا توجد ÙØ¦Ø© Ù„Ù„Ø¥Ø¶Ø§ÙØ©ØŸ", "This category already exists: " => "هذه Ø§Ù„ÙØ¦Ø© موجودة مسبقاً", "No categories selected for deletion." => "لم يتم اختيار ÙØ¦Ø© Ù„Ù„ØØ°Ù", +"Sunday" => "Ø§Ù„Ø§ØØ¯", +"Monday" => "الأثنين", +"Tuesday" => "الثلاثاء", +"Wednesday" => "الاربعاء", +"Thursday" => "الخميس", +"Friday" => "الجمعه", +"Saturday" => "السبت", +"January" => "كانون الثاني", +"February" => "شباط", +"March" => "آذار", +"April" => "نيسان", +"May" => "أيار", +"June" => "ØØ²ÙŠØ±Ø§Ù†", +"July" => "تموز", +"August" => "آب", +"September" => "أيلول", +"October" => "تشرين الاول", +"November" => "تشرين الثاني", +"December" => "كانون الاول", "Settings" => "تعديلات", "seconds ago" => "منذ ثواني", "1 minute ago" => "منذ دقيقة", @@ -13,6 +32,7 @@ "Yes" => "نعم", "Ok" => "مواÙÙ‚", "Error" => "خطأ", +"Share" => "شارك", "Error while sharing" => "ØØµÙ„ خطأ عند عملية المشاركة", "Error while unsharing" => "ØØµÙ„ خطأ عند عملية إزالة المشاركة", "Error while changing permissions" => "ØØµÙ„ خطأ عند عملية إعادة تعيين Ø§Ù„ØªØµØ±ÙŠØ Ø¨Ø§Ù„ØªÙˆØµÙ„", @@ -71,25 +91,6 @@ "Database tablespace" => "Ù…Ø³Ø§ØØ© جدول قاعدة البيانات", "Database host" => "خادم قاعدة البيانات", "Finish setup" => "انهاء التعديلات", -"Sunday" => "Ø§Ù„Ø§ØØ¯", -"Monday" => "الأثنين", -"Tuesday" => "الثلاثاء", -"Wednesday" => "الاربعاء", -"Thursday" => "الخميس", -"Friday" => "الجمعه", -"Saturday" => "السبت", -"January" => "كانون الثاني", -"February" => "شباط", -"March" => "آذار", -"April" => "نيسان", -"May" => "أيار", -"June" => "ØØ²ÙŠØ±Ø§Ù†", -"July" => "تموز", -"August" => "آب", -"September" => "أيلول", -"October" => "تشرين الاول", -"November" => "تشرين الثاني", -"December" => "كانون الاول", "web services under your control" => "خدمات الوب ØªØØª تصرÙÙƒ", "Log out" => "الخروج", "Automatic logon rejected!" => "تم Ø±ÙØ¶ تسجيل الدخول التلقائي!", diff --git a/core/l10n/bg_BG.php b/core/l10n/bg_BG.php index a7cba523be2..587991499a9 100644 --- a/core/l10n/bg_BG.php +++ b/core/l10n/bg_BG.php @@ -8,6 +8,8 @@ "last month" => "поÑледниÑÑ‚ меÑец", "last year" => "поÑледната година", "years ago" => "поÑледните години", +"Error" => "Грешка", +"Share" => "СподелÑне", "Password" => "Парола", "Personal" => "Лични", "Users" => "Потребители", diff --git a/core/l10n/bn_BD.php b/core/l10n/bn_BD.php index 333e4bf0be5..d698f470152 100644 --- a/core/l10n/bn_BD.php +++ b/core/l10n/bn_BD.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "পà§à¦°à¦¿à§Ÿà¦¤à§‡ %s যোগ করতে সমসà§à¦¯à¦¾ দেখা দিয়েছে।", "No categories selected for deletion." => "মà§à¦›à§‡ ফেলার জনà§à¦¯ কোন কà§à¦¯à¦¾à¦Ÿà§‡à¦—রি নিরà§à¦¬à¦¾à¦šà¦¨ করা হয় নি ।", "Error removing %s from favorites." => "পà§à¦°à¦¿à§Ÿ থেকে %s সরিয়ে ফেলতে সমসà§à¦¯à¦¾ দেখা দিয়েছে।", +"Sunday" => "রবিবার", +"Monday" => "সোমবার", +"Tuesday" => "মঙà§à¦—লবার", +"Wednesday" => "বà§à¦§à¦¬à¦¾à¦°", +"Thursday" => "বৃহষà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°", +"Friday" => "শà§à¦•à§à¦°à¦¬à¦¾à¦°", +"Saturday" => "শনিবার", +"January" => "জানà§à§Ÿà¦¾à¦°à¦¿", +"February" => "ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿", +"March" => "মারà§à¦š", +"April" => "à¦à¦ªà§à¦°à¦¿à¦²", +"May" => "মে", +"June" => "জà§à¦¨", +"July" => "জà§à¦²à¦¾à¦‡", +"August" => "অগাষà§à¦Ÿ", +"September" => "সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°", +"October" => "অকà§à¦Ÿà§‹à¦¬à¦°", +"November" => "নà¦à§‡à¦®à§à¦¬à¦°", +"December" => "ডিসেমà§à¦¬à¦°", "Settings" => "নিয়ামকসমূহ", "seconds ago" => "সেকেনà§à¦¡ পূরà§à¦¬à§‡", "1 minute ago" => "1 মিনিট পূরà§à¦¬à§‡", @@ -34,6 +53,7 @@ "Error" => "সমসà§à¦¯à¦¾", "The app name is not specified." => "অà§à¦¯à¦¾à¦ªà§‡à¦° নামটি সà§à¦¨à¦¿à¦°à§à¦¦à¦¿à¦·à§à¦Ÿ নয়।", "The required file {file} is not installed!" => "আবশà§à¦¯à¦¿à¦• {file} টি সংসà§à¦¥à¦¾à¦ªà¦¿à¦¤ নেই !", +"Share" => "à¦à¦¾à¦—াà¦à¦¾à¦—ি কর", "Error while sharing" => "à¦à¦¾à¦—াà¦à¦¾à¦—ি করতে সমসà§à¦¯à¦¾ দেখা দিয়েছে ", "Error while unsharing" => "à¦à¦¾à¦—াà¦à¦¾à¦—ি বাতিল করতে সমসà§à¦¯à¦¾ দেখা দিয়েছে", "Error while changing permissions" => "অনà§à¦®à¦¤à¦¿à¦¸à¦®à§‚হ পরিবরà§à¦¤à¦¨ করতে সমসà§à¦¯à¦¾ দেখা দিয়েছে", @@ -95,25 +115,6 @@ "Database tablespace" => "ডাটাবেজ টেবলসà§à¦ªà§‡à¦¸", "Database host" => "ডাটাবেজ হোসà§à¦Ÿ", "Finish setup" => "সেটআপ সà§à¦¸à¦®à§à¦ªà¦¨à§à¦¨ কর", -"Sunday" => "রবিবার", -"Monday" => "সোমবার", -"Tuesday" => "মঙà§à¦—লবার", -"Wednesday" => "বà§à¦§à¦¬à¦¾à¦°", -"Thursday" => "বৃহষà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°", -"Friday" => "শà§à¦•à§à¦°à¦¬à¦¾à¦°", -"Saturday" => "শনিবার", -"January" => "জানà§à§Ÿà¦¾à¦°à¦¿", -"February" => "ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿", -"March" => "মারà§à¦š", -"April" => "à¦à¦ªà§à¦°à¦¿à¦²", -"May" => "মে", -"June" => "জà§à¦¨", -"July" => "জà§à¦²à¦¾à¦‡", -"August" => "অগাষà§à¦Ÿ", -"September" => "সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°", -"October" => "অকà§à¦Ÿà§‹à¦¬à¦°", -"November" => "নà¦à§‡à¦®à§à¦¬à¦°", -"December" => "ডিসেমà§à¦¬à¦°", "web services under your control" => "ওয়েব সারà§à¦à¦¿à¦¸à§‡à¦° নিয়নà§à¦¤à§à¦°à¦£ আপনার হাতের মà§à¦ à§‹à§Ÿ", "Log out" => "পà§à¦°à¦¸à§à¦¥à¦¾à¦¨", "Lost your password?" => "কূটশবà§à¦¦ হারিয়েছেন?", diff --git a/core/l10n/ca.php b/core/l10n/ca.php index e66bad25e43..780366aaf0e 100644 --- a/core/l10n/ca.php +++ b/core/l10n/ca.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Error en afegir %s als preferits.", "No categories selected for deletion." => "No hi ha categories per eliminar.", "Error removing %s from favorites." => "Error en eliminar %s dels preferits.", +"Sunday" => "Diumenge", +"Monday" => "Dilluns", +"Tuesday" => "Dimarts", +"Wednesday" => "Dimecres", +"Thursday" => "Dijous", +"Friday" => "Divendres", +"Saturday" => "Dissabte", +"January" => "Gener", +"February" => "Febrer", +"March" => "Març", +"April" => "Abril", +"May" => "Maig", +"June" => "Juny", +"July" => "Juliol", +"August" => "Agost", +"September" => "Setembre", +"October" => "Octubre", +"November" => "Novembre", +"December" => "Desembre", "Settings" => "Arranjament", "seconds ago" => "segons enrere", "1 minute ago" => "fa 1 minut", @@ -34,6 +53,8 @@ "Error" => "Error", "The app name is not specified." => "No s'ha especificat el nom de l'aplicació.", "The required file {file} is not installed!" => "El fitxer requerit {file} no està instal·lat!", +"Share" => "Comparteix", +"Shared" => "Compartit", "Error while sharing" => "Error en compartir", "Error while unsharing" => "Error en deixar de compartir", "Error while changing permissions" => "Error en canviar els permisos", @@ -63,6 +84,8 @@ "Error setting expiration date" => "Error en establir la data d'expiració", "Sending ..." => "Enviant...", "Email sent" => "El correu electrónic s'ha enviat", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "L'actualització ha estat incorrecte. Comuniqueu aquest error a <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">la comunitat ownCloud</a>.", +"The update was successful. Redirecting you to ownCloud now." => "L'actualització ha estat correcte. Ara sou redireccionat a ownCloud.", "ownCloud password reset" => "estableix de nou la contrasenya Owncloud", "Use the following link to reset your password: {link}" => "Useu l'enllaç següent per restablir la contrasenya: {link}", "You will receive a link to reset your password via Email." => "Rebreu un enllaç al correu electrònic per reiniciar la contrasenya.", @@ -98,25 +121,6 @@ "Database tablespace" => "Espai de taula de la base de dades", "Database host" => "Ordinador central de la base de dades", "Finish setup" => "Acaba la configuració", -"Sunday" => "Diumenge", -"Monday" => "Dilluns", -"Tuesday" => "Dimarts", -"Wednesday" => "Dimecres", -"Thursday" => "Dijous", -"Friday" => "Divendres", -"Saturday" => "Dissabte", -"January" => "Gener", -"February" => "Febrer", -"March" => "Març", -"April" => "Abril", -"May" => "Maig", -"June" => "Juny", -"July" => "Juliol", -"August" => "Agost", -"September" => "Setembre", -"October" => "Octubre", -"November" => "Novembre", -"December" => "Desembre", "web services under your control" => "controleu els vostres serveis web", "Log out" => "Surt", "Automatic logon rejected!" => "L'ha rebutjat l'acceditació automà tica!", diff --git a/core/l10n/cs_CZ.php b/core/l10n/cs_CZ.php index 7a766bd7176..a8fa035711c 100644 --- a/core/l10n/cs_CZ.php +++ b/core/l10n/cs_CZ.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Chyba pÅ™i pÅ™idávánà %s k oblÃbeným.", "No categories selected for deletion." => "Žádné kategorie nebyly vybrány ke smazánÃ.", "Error removing %s from favorites." => "Chyba pÅ™i odebÃránà %s z oblÃbených.", +"Sunday" => "NedÄ›le", +"Monday" => "PondÄ›lÃ", +"Tuesday" => "Úterý", +"Wednesday" => "StÅ™eda", +"Thursday" => "ÄŒtvrtek", +"Friday" => "Pátek", +"Saturday" => "Sobota", +"January" => "Leden", +"February" => "Únor", +"March" => "BÅ™ezen", +"April" => "Duben", +"May" => "KvÄ›ten", +"June" => "ÄŒerven", +"July" => "ÄŒervenec", +"August" => "Srpen", +"September" => "ZářÃ", +"October" => "ŘÃjen", +"November" => "Listopad", +"December" => "Prosinec", "Settings" => "NastavenÃ", "seconds ago" => "pÅ™ed pár vteÅ™inami", "1 minute ago" => "pÅ™ed minutou", @@ -34,6 +53,8 @@ "Error" => "Chyba", "The app name is not specified." => "Nenà urÄen název aplikace.", "The required file {file} is not installed!" => "Požadovaný soubor {file} nenà nainstalován.", +"Share" => "SdÃlet", +"Shared" => "SdÃlené", "Error while sharing" => "Chyba pÅ™i sdÃlenÃ", "Error while unsharing" => "Chyba pÅ™i ruÅ¡enà sdÃlenÃ", "Error while changing permissions" => "Chyba pÅ™i zmÄ›nÄ› oprávnÄ›nÃ", @@ -63,6 +84,8 @@ "Error setting expiration date" => "Chyba pÅ™i nastavenà data vyprÅ¡enà platnosti", "Sending ..." => "OdesÃlám...", "Email sent" => "E-mail odeslán", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "Aktualizace neprobÄ›hla úspěšnÄ›. Nahlaste prosÃm problém do <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">evidence chyb ownCloud</a>", +"The update was successful. Redirecting you to ownCloud now." => "Aktualizace byla úspěšná. PÅ™esmÄ›rovávám na ownCloud.", "ownCloud password reset" => "Obnovenà hesla pro ownCloud", "Use the following link to reset your password: {link}" => "Heslo obnovÃte použitÃm následujÃcÃho odkazu: {link}", "You will receive a link to reset your password via Email." => "Bude Vám e-mailem zaslán odkaz pro obnovu hesla.", @@ -98,25 +121,6 @@ "Database tablespace" => "Tabulkový prostor databáze", "Database host" => "Hostitel databáze", "Finish setup" => "DokonÄit nastavenÃ", -"Sunday" => "NedÄ›le", -"Monday" => "PondÄ›lÃ", -"Tuesday" => "Úterý", -"Wednesday" => "StÅ™eda", -"Thursday" => "ÄŒtvrtek", -"Friday" => "Pátek", -"Saturday" => "Sobota", -"January" => "Leden", -"February" => "Únor", -"March" => "BÅ™ezen", -"April" => "Duben", -"May" => "KvÄ›ten", -"June" => "ÄŒerven", -"July" => "ÄŒervenec", -"August" => "Srpen", -"September" => "ZářÃ", -"October" => "ŘÃjen", -"November" => "Listopad", -"December" => "Prosinec", "web services under your control" => "webové služby pod Vašà kontrolou", "Log out" => "Odhlásit se", "Automatic logon rejected!" => "Automatické pÅ™ihlášenà odmÃtnuto.", diff --git a/core/l10n/da.php b/core/l10n/da.php index e8155c298c0..ca23b622289 100644 --- a/core/l10n/da.php +++ b/core/l10n/da.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Fejl ved tilføjelse af %s til favoritter.", "No categories selected for deletion." => "Ingen kategorier valgt", "Error removing %s from favorites." => "Fejl ved fjernelse af %s fra favoritter.", +"Sunday" => "Søndag", +"Monday" => "Mandag", +"Tuesday" => "Tirsdag", +"Wednesday" => "Onsdag", +"Thursday" => "Torsdag", +"Friday" => "Fredag", +"Saturday" => "Lørdag", +"January" => "Januar", +"February" => "Februar", +"March" => "Marts", +"April" => "April", +"May" => "Maj", +"June" => "Juni", +"July" => "Juli", +"August" => "August", +"September" => "September", +"October" => "Oktober", +"November" => "November", +"December" => "December", "Settings" => "Indstillinger", "seconds ago" => "sekunder siden", "1 minute ago" => "1 minut siden", @@ -34,6 +53,7 @@ "Error" => "Fejl", "The app name is not specified." => "Den app navn er ikke angivet.", "The required file {file} is not installed!" => "Den krævede fil {file} er ikke installeret!", +"Share" => "Del", "Error while sharing" => "Fejl under deling", "Error while unsharing" => "Fejl under annullering af deling", "Error while changing permissions" => "Fejl under justering af rettigheder", @@ -63,6 +83,8 @@ "Error setting expiration date" => "Fejl under sætning af udløbsdato", "Sending ..." => "Sender ...", "Email sent" => "E-mail afsendt", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "Opdateringen blev ikke udført korrekt. Rapporter venligst problemet til <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownClouds community</a>.", +"The update was successful. Redirecting you to ownCloud now." => "Opdateringen blev udført korrekt. Du bliver nu viderestillet til ownCloud.", "ownCloud password reset" => "Nulstil ownCloud kodeord", "Use the following link to reset your password: {link}" => "Anvend følgende link til at nulstille din adgangskode: {link}", "You will receive a link to reset your password via Email." => "Du vil modtage et link til at nulstille dit kodeord via email.", @@ -98,25 +120,6 @@ "Database tablespace" => "Database tabelplads", "Database host" => "Databasehost", "Finish setup" => "Afslut opsætning", -"Sunday" => "Søndag", -"Monday" => "Mandag", -"Tuesday" => "Tirsdag", -"Wednesday" => "Onsdag", -"Thursday" => "Torsdag", -"Friday" => "Fredag", -"Saturday" => "Lørdag", -"January" => "Januar", -"February" => "Februar", -"March" => "Marts", -"April" => "April", -"May" => "Maj", -"June" => "Juni", -"July" => "Juli", -"August" => "August", -"September" => "September", -"October" => "Oktober", -"November" => "November", -"December" => "December", "web services under your control" => "Webtjenester under din kontrol", "Log out" => "Log ud", "Automatic logon rejected!" => "Automatisk login afvist!", @@ -126,5 +129,6 @@ "remember" => "husk", "Log in" => "Log ind", "prev" => "forrige", -"next" => "næste" +"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 89846301a58..358e8e3e756 100644 --- a/core/l10n/de.php +++ b/core/l10n/de.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Fehler beim Hinzufügen von %s zu den Favoriten.", "No categories selected for deletion." => "Es wurde keine Kategorien zum Löschen ausgewählt.", "Error removing %s from favorites." => "Fehler beim Entfernen von %s von den Favoriten.", +"Sunday" => "Sonntag", +"Monday" => "Montag", +"Tuesday" => "Dienstag", +"Wednesday" => "Mittwoch", +"Thursday" => "Donnerstag", +"Friday" => "Freitag", +"Saturday" => "Samstag", +"January" => "Januar", +"February" => "Februar", +"March" => "März", +"April" => "April", +"May" => "Mai", +"June" => "Juni", +"July" => "Juli", +"August" => "August", +"September" => "September", +"October" => "Oktober", +"November" => "November", +"December" => "Dezember", "Settings" => "Einstellungen", "seconds ago" => "Gerade eben", "1 minute ago" => "vor einer Minute", @@ -34,6 +53,7 @@ "Error" => "Fehler", "The app name is not specified." => "Der App-Name ist nicht angegeben.", "The required file {file} is not installed!" => "Die benötigte Datei {file} ist nicht installiert.", +"Share" => "Freigeben", "Error while sharing" => "Fehler beim Freigeben", "Error while unsharing" => "Fehler beim Aufheben der Freigabe", "Error while changing permissions" => "Fehler beim Ändern der Rechte", @@ -63,6 +83,8 @@ "Error setting expiration date" => "Fehler beim Setzen des Ablaufdatums", "Sending ..." => "Sende ...", "Email sent" => "E-Mail wurde verschickt", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "Das Update ist fehlgeschlagen. Bitte melden Sie dieses Problem an die <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud Gemeinschaft</a>.", +"The update was successful. Redirecting you to ownCloud now." => "Das Update war erfolgreich. Sie werden nun zu ownCloud weitergeleitet.", "ownCloud password reset" => "ownCloud-Passwort zurücksetzen", "Use the following link to reset your password: {link}" => "Nutze den nachfolgenden Link, um Dein Passwort zurückzusetzen: {link}", "You will receive a link to reset your password via Email." => "Du erhältst einen Link per E-Mail, um Dein Passwort zurückzusetzen.", @@ -98,25 +120,6 @@ "Database tablespace" => "Datenbank-Tablespace", "Database host" => "Datenbank-Host", "Finish setup" => "Installation abschließen", -"Sunday" => "Sonntag", -"Monday" => "Montag", -"Tuesday" => "Dienstag", -"Wednesday" => "Mittwoch", -"Thursday" => "Donnerstag", -"Friday" => "Freitag", -"Saturday" => "Samstag", -"January" => "Januar", -"February" => "Februar", -"March" => "März", -"April" => "April", -"May" => "Mai", -"June" => "Juni", -"July" => "Juli", -"August" => "August", -"September" => "September", -"October" => "Oktober", -"November" => "November", -"December" => "Dezember", "web services under your control" => "Web-Services unter Ihrer Kontrolle", "Log out" => "Abmelden", "Automatic logon rejected!" => "Automatischer Login zurückgewiesen!", diff --git a/core/l10n/de_DE.php b/core/l10n/de_DE.php index d62b000c0ab..ca5b843a832 100644 --- a/core/l10n/de_DE.php +++ b/core/l10n/de_DE.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Fehler beim Hinzufügen von %s zu den Favoriten.", "No categories selected for deletion." => "Es wurden keine Kategorien zum Löschen ausgewählt.", "Error removing %s from favorites." => "Fehler beim Entfernen von %s von den Favoriten.", +"Sunday" => "Sonntag", +"Monday" => "Montag", +"Tuesday" => "Dienstag", +"Wednesday" => "Mittwoch", +"Thursday" => "Donnerstag", +"Friday" => "Freitag", +"Saturday" => "Samstag", +"January" => "Januar", +"February" => "Februar", +"March" => "März", +"April" => "April", +"May" => "Mai", +"June" => "Juni", +"July" => "Juli", +"August" => "August", +"September" => "September", +"October" => "Oktober", +"November" => "November", +"December" => "Dezember", "Settings" => "Einstellungen", "seconds ago" => "Gerade eben", "1 minute ago" => "Vor 1 Minute", @@ -34,6 +53,8 @@ "Error" => "Fehler", "The app name is not specified." => "Der App-Name ist nicht angegeben.", "The required file {file} is not installed!" => "Die benötigte Datei {file} ist nicht installiert.", +"Share" => "Freigeben", +"Shared" => "Freigegeben", "Error while sharing" => "Fehler bei der Freigabe", "Error while unsharing" => "Fehler bei der Aufhebung der Freigabe", "Error while changing permissions" => "Fehler bei der Änderung der Rechte", @@ -63,6 +84,8 @@ "Error setting expiration date" => "Fehler beim Setzen des Ablaufdatums", "Sending ..." => "Sende ...", "Email sent" => "Email gesendet", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "Das Update ist fehlgeschlagen. Bitte melden Sie dieses Problem an die <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud Gemeinschaft</a>.", +"The update was successful. Redirecting you to ownCloud now." => "Das Update war erfolgreich. Sie werden nun zu ownCloud weitergeleitet.", "ownCloud password reset" => "ownCloud-Passwort zurücksetzen", "Use the following link to reset your password: {link}" => "Nutzen Sie den nachfolgenden Link, um Ihr Passwort zurückzusetzen: {link}", "You will receive a link to reset your password via Email." => "Sie erhalten einen Link per E-Mail, um Ihr Passwort zurückzusetzen.", @@ -98,25 +121,6 @@ "Database tablespace" => "Datenbank-Tablespace", "Database host" => "Datenbank-Host", "Finish setup" => "Installation abschließen", -"Sunday" => "Sonntag", -"Monday" => "Montag", -"Tuesday" => "Dienstag", -"Wednesday" => "Mittwoch", -"Thursday" => "Donnerstag", -"Friday" => "Freitag", -"Saturday" => "Samstag", -"January" => "Januar", -"February" => "Februar", -"March" => "März", -"April" => "April", -"May" => "Mai", -"June" => "Juni", -"July" => "Juli", -"August" => "August", -"September" => "September", -"October" => "Oktober", -"November" => "November", -"December" => "Dezember", "web services under your control" => "Web-Services unter Ihrer Kontrolle", "Log out" => "Abmelden", "Automatic logon rejected!" => "Automatische Anmeldung verweigert.", diff --git a/core/l10n/el.php b/core/l10n/el.php index c029b01fd9c..74ec378b9df 100644 --- a/core/l10n/el.php +++ b/core/l10n/el.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Σφάλμα Ï€Ïοσθήκης %s στα αγαπημÎνα.", "No categories selected for deletion." => "Δεν επιλÎχτηκαν κατηγοÏίες για διαγÏαφή.", "Error removing %s from favorites." => "Σφάλμα αφαίÏεσης %s από τα αγαπημÎνα.", +"Sunday" => "ΚυÏιακή", +"Monday" => "ΔευτÎÏα", +"Tuesday" => "ΤÏίτη", +"Wednesday" => "ΤετάÏτη", +"Thursday" => "Î Îμπτη", +"Friday" => "ΠαÏασκευή", +"Saturday" => "Σάββατο", +"January" => "ΙανουάÏιος", +"February" => "ΦεβÏουάÏιος", +"March" => "ΜάÏτιος", +"April" => "ΑπÏίλιος", +"May" => "Μάϊος", +"June" => "ΙοÏνιος", +"July" => "ΙοÏλιος", +"August" => "ΑÏγουστος", +"September" => "ΣεπτÎμβÏιος", +"October" => "ΟκτώβÏιος", +"November" => "ÎοÎμβÏιος", +"December" => "ΔεκÎμβÏιος", "Settings" => "Ρυθμίσεις", "seconds ago" => "δευτεÏόλεπτα Ï€Ïιν", "1 minute ago" => "1 λεπτό Ï€Ïιν", @@ -34,6 +53,7 @@ "Error" => "Σφάλμα", "The app name is not specified." => "Δεν καθοÏίστηκε το όνομα της εφαÏμογής.", "The required file {file} is not installed!" => "Το απαιτοÏμενο αÏχείο {file} δεν εγκαταστάθηκε!", +"Share" => "ΔιαμοιÏασμός", "Error while sharing" => "Σφάλμα κατά τον διαμοιÏασμό", "Error while unsharing" => "Σφάλμα κατά το σταμάτημα του διαμοιÏασμοÏ", "Error while changing permissions" => "Σφάλμα κατά την αλλαγή των δικαιωμάτων", @@ -98,25 +118,6 @@ "Database tablespace" => "Κενά Πινάκων Βάσης ΔεδομÎνων", "Database host" => "Διακομιστής βάσης δεδομÎνων", "Finish setup" => "ΟλοκλήÏωση εγκατάστασης", -"Sunday" => "ΚυÏιακή", -"Monday" => "ΔευτÎÏα", -"Tuesday" => "ΤÏίτη", -"Wednesday" => "ΤετάÏτη", -"Thursday" => "Î Îμπτη", -"Friday" => "ΠαÏασκευή", -"Saturday" => "Σάββατο", -"January" => "ΙανουάÏιος", -"February" => "ΦεβÏουάÏιος", -"March" => "ΜάÏτιος", -"April" => "ΑπÏίλιος", -"May" => "Μάϊος", -"June" => "ΙοÏνιος", -"July" => "ΙοÏλιος", -"August" => "ΑÏγουστος", -"September" => "ΣεπτÎμβÏιος", -"October" => "ΟκτώβÏιος", -"November" => "ÎοÎμβÏιος", -"December" => "ΔεκÎμβÏιος", "web services under your control" => "ΥπηÏεσίες web υπό τον Îλεγχό σας", "Log out" => "ΑποσÏνδεση", "Automatic logon rejected!" => "ΑποÏÏίφθηκε η αυτόματη σÏνδεση!", diff --git a/core/l10n/eo.php b/core/l10n/eo.php index 0319eeef2d4..7c0e65f4e03 100644 --- a/core/l10n/eo.php +++ b/core/l10n/eo.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Eraro dum aldono de %s al favoratoj.", "No categories selected for deletion." => "Neniu kategorio elektiÄis por forigo.", "Error removing %s from favorites." => "Eraro dum forigo de %s el favoratoj.", +"Sunday" => "dimanĉo", +"Monday" => "lundo", +"Tuesday" => "mardo", +"Wednesday" => "merkredo", +"Thursday" => "ĵaÅdo", +"Friday" => "vendredo", +"Saturday" => "sabato", +"January" => "Januaro", +"February" => "Februaro", +"March" => "Marto", +"April" => "Aprilo", +"May" => "Majo", +"June" => "Junio", +"July" => "Julio", +"August" => "AÅgusto", +"September" => "Septembro", +"October" => "Oktobro", +"November" => "Novembro", +"December" => "Decembro", "Settings" => "Agordo", "seconds ago" => "sekundoj antaÅe", "1 minute ago" => "antaÅ 1 minuto", @@ -34,6 +53,7 @@ "Error" => "Eraro", "The app name is not specified." => "Ne indikiÄis nomo de la aplikaĵo.", "The required file {file} is not installed!" => "La necesa dosiero {file} ne instaliÄis!", +"Share" => "Kunhavigi", "Error while sharing" => "Eraro dum kunhavigo", "Error while unsharing" => "Eraro dum malkunhavigo", "Error while changing permissions" => "Eraro dum ÅanÄo de permesoj", @@ -95,25 +115,6 @@ "Database tablespace" => "Datumbaza tabelospaco", "Database host" => "Datumbaza gastigo", "Finish setup" => "Fini la instalon", -"Sunday" => "dimanĉo", -"Monday" => "lundo", -"Tuesday" => "mardo", -"Wednesday" => "merkredo", -"Thursday" => "ĵaÅdo", -"Friday" => "vendredo", -"Saturday" => "sabato", -"January" => "Januaro", -"February" => "Februaro", -"March" => "Marto", -"April" => "Aprilo", -"May" => "Majo", -"June" => "Junio", -"July" => "Julio", -"August" => "AÅgusto", -"September" => "Septembro", -"October" => "Oktobro", -"November" => "Novembro", -"December" => "Decembro", "web services under your control" => "TTT-servoj sub via kontrolo", "Log out" => "Elsaluti", "If you did not change your password recently, your account may be compromised!" => "Se vi ne ÅanÄis vian pasvorton lastatempe, via konto eble kompromitas!", diff --git a/core/l10n/es.php b/core/l10n/es.php index 4f8f1936c7f..e046e3bf7a0 100644 --- a/core/l10n/es.php +++ b/core/l10n/es.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Error añadiendo %s a los favoritos.", "No categories selected for deletion." => "No hay categorÃas seleccionadas para borrar.", "Error removing %s from favorites." => "Error eliminando %s de los favoritos.", +"Sunday" => "Domingo", +"Monday" => "Lunes", +"Tuesday" => "Martes", +"Wednesday" => "Miércoles", +"Thursday" => "Jueves", +"Friday" => "Viernes", +"Saturday" => "Sábado", +"January" => "Enero", +"February" => "Febrero", +"March" => "Marzo", +"April" => "Abril", +"May" => "Mayo", +"June" => "Junio", +"July" => "Julio", +"August" => "Agosto", +"September" => "Septiembre", +"October" => "Octubre", +"November" => "Noviembre", +"December" => "Diciembre", "Settings" => "Ajustes", "seconds ago" => "hace segundos", "1 minute ago" => "hace 1 minuto", @@ -34,6 +53,8 @@ "Error" => "Fallo", "The app name is not specified." => "El nombre de la app no se ha especificado.", "The required file {file} is not installed!" => "El fichero {file} requerido, no está instalado.", +"Share" => "Compartir", +"Shared" => "Compartido", "Error while sharing" => "Error compartiendo", "Error while unsharing" => "Error descompartiendo", "Error while changing permissions" => "Error cambiando permisos", @@ -63,6 +84,8 @@ "Error setting expiration date" => "Error estableciendo fecha de caducidad", "Sending ..." => "Enviando...", "Email sent" => "Correo electrónico enviado", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "La actualización ha fracasado. Por favor, informe este problema a la <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">Comunidad de ownCloud</ a>.", +"The update was successful. Redirecting you to ownCloud now." => "La actualización se ha realizado correctamente. Redireccionando a ownCloud ahora.", "ownCloud password reset" => "Reiniciar contraseña de ownCloud", "Use the following link to reset your password: {link}" => "Utiliza el siguiente enlace para restablecer tu contraseña: {link}", "You will receive a link to reset your password via Email." => "Recibirás un enlace por correo electrónico para restablecer tu contraseña", @@ -98,25 +121,6 @@ "Database tablespace" => "Espacio de tablas de la base de datos", "Database host" => "Host de la base de datos", "Finish setup" => "Completar la instalación", -"Sunday" => "Domingo", -"Monday" => "Lunes", -"Tuesday" => "Martes", -"Wednesday" => "Miércoles", -"Thursday" => "Jueves", -"Friday" => "Viernes", -"Saturday" => "Sábado", -"January" => "Enero", -"February" => "Febrero", -"March" => "Marzo", -"April" => "Abril", -"May" => "Mayo", -"June" => "Junio", -"July" => "Julio", -"August" => "Agosto", -"September" => "Septiembre", -"October" => "Octubre", -"November" => "Noviembre", -"December" => "Diciembre", "web services under your control" => "servicios web bajo tu control", "Log out" => "Salir", "Automatic logon rejected!" => "¡Inicio de sesión automático rechazado!", diff --git a/core/l10n/es_AR.php b/core/l10n/es_AR.php index 374a679260b..1ce26416f6e 100644 --- a/core/l10n/es_AR.php +++ b/core/l10n/es_AR.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Error al agregar %s a favoritos. ", "No categories selected for deletion." => "No hay categorÃas seleccionadas para borrar.", "Error removing %s from favorites." => "Error al remover %s de favoritos. ", +"Sunday" => "Domingo", +"Monday" => "Lunes", +"Tuesday" => "Martes", +"Wednesday" => "Miércoles", +"Thursday" => "Jueves", +"Friday" => "Viernes", +"Saturday" => "Sábado", +"January" => "Enero", +"February" => "Febrero", +"March" => "Marzo", +"April" => "Abril", +"May" => "Mayo", +"June" => "Junio", +"July" => "Julio", +"August" => "Agosto", +"September" => "Septiembre", +"October" => "Octubre", +"November" => "Noviembre", +"December" => "Diciembre", "Settings" => "Ajustes", "seconds ago" => "segundos atrás", "1 minute ago" => "hace 1 minuto", @@ -34,6 +53,8 @@ "Error" => "Error", "The app name is not specified." => "El nombre de la aplicación no esta especificado.", "The required file {file} is not installed!" => "¡El archivo requerido {file} no está instalado!", +"Share" => "Compartir", +"Shared" => "Compartido", "Error while sharing" => "Error al compartir", "Error while unsharing" => "Error en el procedimiento de ", "Error while changing permissions" => "Error al cambiar permisos", @@ -63,6 +84,8 @@ "Error setting expiration date" => "Error al asignar fecha de vencimiento", "Sending ..." => "Enviando...", "Email sent" => "Email enviado", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "La actualización no pudo ser completada. Por favor, reportá el inconveniente a la comunidad <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud</a>.", +"The update was successful. Redirecting you to ownCloud now." => "La actualización fue exitosa. Estás siendo redirigido a ownCloud.", "ownCloud password reset" => "Restablecer contraseña de ownCloud", "Use the following link to reset your password: {link}" => "Usá este enlace para restablecer tu contraseña: {link}", "You will receive a link to reset your password via Email." => "Vas a recibir un enlace por e-mail para restablecer tu contraseña", @@ -98,25 +121,6 @@ "Database tablespace" => "Espacio de tablas de la base de datos", "Database host" => "Host de la base de datos", "Finish setup" => "Completar la instalación", -"Sunday" => "Domingo", -"Monday" => "Lunes", -"Tuesday" => "Martes", -"Wednesday" => "Miércoles", -"Thursday" => "Jueves", -"Friday" => "Viernes", -"Saturday" => "Sábado", -"January" => "Enero", -"February" => "Febrero", -"March" => "Marzo", -"April" => "Abril", -"May" => "Mayo", -"June" => "Junio", -"July" => "Julio", -"August" => "Agosto", -"September" => "Septiembre", -"October" => "Octubre", -"November" => "Noviembre", -"December" => "Diciembre", "web services under your control" => "servicios web sobre los que tenés control", "Log out" => "Cerrar la sesión", "Automatic logon rejected!" => "¡El inicio de sesión automático fue rechazado!", diff --git a/core/l10n/et_EE.php b/core/l10n/et_EE.php index b79dd4761e7..f4328de9901 100644 --- a/core/l10n/et_EE.php +++ b/core/l10n/et_EE.php @@ -2,6 +2,25 @@ "No category to add?" => "Pole kategooriat, mida lisada?", "This category already exists: " => "See kategooria on juba olemas: ", "No categories selected for deletion." => "Kustutamiseks pole kategooriat valitud.", +"Sunday" => "Pühapäev", +"Monday" => "Esmaspäev", +"Tuesday" => "Teisipäev", +"Wednesday" => "Kolmapäev", +"Thursday" => "Neljapäev", +"Friday" => "Reede", +"Saturday" => "Laupäev", +"January" => "Jaanuar", +"February" => "Veebruar", +"March" => "Märts", +"April" => "Aprill", +"May" => "Mai", +"June" => "Juuni", +"July" => "Juuli", +"August" => "August", +"September" => "September", +"October" => "Oktoober", +"November" => "November", +"December" => "Detsember", "Settings" => "Seaded", "seconds ago" => "sekundit tagasi", "1 minute ago" => "1 minut tagasi", @@ -19,6 +38,7 @@ "Yes" => "Jah", "Ok" => "Ok", "Error" => "Viga", +"Share" => "Jaga", "Error while sharing" => "Viga jagamisel", "Error while unsharing" => "Viga jagamise lõpetamisel", "Error while changing permissions" => "Viga õiguste muutmisel", @@ -74,25 +94,6 @@ "Database tablespace" => "Andmebaasi tabeliruum", "Database host" => "Andmebaasi host", "Finish setup" => "Lõpeta seadistamine", -"Sunday" => "Pühapäev", -"Monday" => "Esmaspäev", -"Tuesday" => "Teisipäev", -"Wednesday" => "Kolmapäev", -"Thursday" => "Neljapäev", -"Friday" => "Reede", -"Saturday" => "Laupäev", -"January" => "Jaanuar", -"February" => "Veebruar", -"March" => "Märts", -"April" => "Aprill", -"May" => "Mai", -"June" => "Juuni", -"July" => "Juuli", -"August" => "August", -"September" => "September", -"October" => "Oktoober", -"November" => "November", -"December" => "Detsember", "web services under your control" => "veebiteenused sinu kontrolli all", "Log out" => "Logi välja", "Automatic logon rejected!" => "Automaatne sisselogimine lükati tagasi!", diff --git a/core/l10n/eu.php b/core/l10n/eu.php index 3f1a2909531..ed919d64d9d 100644 --- a/core/l10n/eu.php +++ b/core/l10n/eu.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Errorea gertatu da %s gogokoetara gehitzean.", "No categories selected for deletion." => "Ez da ezabatzeko kategoriarik hautatu.", "Error removing %s from favorites." => "Errorea gertatu da %s gogokoetatik ezabatzean.", +"Sunday" => "Igandea", +"Monday" => "Astelehena", +"Tuesday" => "Asteartea", +"Wednesday" => "Asteazkena", +"Thursday" => "Osteguna", +"Friday" => "Ostirala", +"Saturday" => "Larunbata", +"January" => "Urtarrila", +"February" => "Otsaila", +"March" => "Martxoa", +"April" => "Apirila", +"May" => "Maiatza", +"June" => "Ekaina", +"July" => "Uztaila", +"August" => "Abuztua", +"September" => "Iraila", +"October" => "Urria", +"November" => "Azaroa", +"December" => "Abendua", "Settings" => "Ezarpenak", "seconds ago" => "segundu", "1 minute ago" => "orain dela minutu 1", @@ -34,6 +53,8 @@ "Error" => "Errorea", "The app name is not specified." => "App izena ez dago zehaztuta.", "The required file {file} is not installed!" => "Beharrezkoa den {file} fitxategia ez dago instalatuta!", +"Share" => "Elkarbanatu", +"Shared" => "Elkarbanatuta", "Error while sharing" => "Errore bat egon da elkarbanatzean", "Error while unsharing" => "Errore bat egon da elkarbanaketa desegitean", "Error while changing permissions" => "Errore bat egon da baimenak aldatzean", @@ -63,6 +84,8 @@ "Error setting expiration date" => "Errore bat egon da muga data ezartzean", "Sending ..." => "Bidaltzen ...", "Email sent" => "Eposta bidalia", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "Eguneraketa ez da ongi egin. Mesedez egin arazoaren txosten bat <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud komunitatearentzako</a>.", +"The update was successful. Redirecting you to ownCloud now." => "Eguneraketa ongi egin da. Orain zure ownClouderea berbideratua izango zara.", "ownCloud password reset" => "ownCloud-en pasahitza berrezarri", "Use the following link to reset your password: {link}" => "Eribili hurrengo lotura zure pasahitza berrezartzeko: {link}", "You will receive a link to reset your password via Email." => "Zure pashitza berrezartzeko lotura bat jasoko duzu Epostaren bidez.", @@ -98,25 +121,6 @@ "Database tablespace" => "Datu basearen taula-lekua", "Database host" => "Datubasearen hostalaria", "Finish setup" => "Bukatu konfigurazioa", -"Sunday" => "Igandea", -"Monday" => "Astelehena", -"Tuesday" => "Asteartea", -"Wednesday" => "Asteazkena", -"Thursday" => "Osteguna", -"Friday" => "Ostirala", -"Saturday" => "Larunbata", -"January" => "Urtarrila", -"February" => "Otsaila", -"March" => "Martxoa", -"April" => "Apirila", -"May" => "Maiatza", -"June" => "Ekaina", -"July" => "Uztaila", -"August" => "Abuztua", -"September" => "Iraila", -"October" => "Urria", -"November" => "Azaroa", -"December" => "Abendua", "web services under your control" => "web zerbitzuak zure kontrolpean", "Log out" => "Saioa bukatu", "Automatic logon rejected!" => "Saio hasiera automatikoa ez onartuta!", diff --git a/core/l10n/fa.php b/core/l10n/fa.php index ad5bafeb1a2..6f1f65bd34f 100644 --- a/core/l10n/fa.php +++ b/core/l10n/fa.php @@ -1,27 +1,90 @@ <?php $TRANSLATIONS = array( +"User %s shared a file with you" => "کاربر %s یک پرونده را با شما به اشتراک گذاشته است.", +"User %s shared a folder with you" => "کاربر %s یک پوشه را با شما به اشتراک گذاشته است.", +"User %s shared the file \"%s\" with you. It is available for download here: %s" => "کاربر %s پرونده \"%s\" را با شما به اشتراک گذاشته است. پرونده برای دانلود اینجاست : %s", +"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "کاربر %s پوشه \"%s\" را با شما به اشتراک گذاشته است. پرونده برای دانلود اینجاست : %s", +"Category type not provided." => "نوع دسته بندی ارائه نشده است.", "No category to add?" => "آیا گروه دیگری برای Ø§ÙØ²ÙˆØ¯Ù† ندارید", "This category already exists: " => "این گروه از قبل اضاÙÙ‡ شده", +"Object type not provided." => "نوع Ø´ÛŒ ارائه نشده است.", +"%s ID not provided." => "شناسه %s ارائه نشده است.", +"Error adding %s to favorites." => "خطای اضاÙÙ‡ کردن %s به علاقه مندی ها.", "No categories selected for deletion." => "هیج دسته ای برای پاک شدن انتخاب نشده است", +"Error removing %s from favorites." => "خطای پاک کردن %s از علاقه مندی ها.", +"Sunday" => "یکشنبه", +"Monday" => "دوشنبه", +"Tuesday" => "سه شنبه", +"Wednesday" => "چهارشنبه", +"Thursday" => "پنجشنبه", +"Friday" => "جمعه", +"Saturday" => "شنبه", +"January" => "ژانویه", +"February" => "ÙØ¨Ø±ÛŒÙ‡", +"March" => "مارس", +"April" => "آوریل", +"May" => "Ù…ÛŒ", +"June" => "ژوئن", +"July" => "جولای", +"August" => "آگوست", +"September" => "سپتامبر", +"October" => "اکتبر", +"November" => "نوامبر", +"December" => "دسامبر", "Settings" => "تنظیمات", "seconds ago" => "ثانیه‌ها پیش", "1 minute ago" => "1 دقیقه پیش", +"{minutes} minutes ago" => "{دقیقه ها} دقیقه های پیش", +"1 hour ago" => "1 ساعت پیش", +"{hours} hours ago" => "{ساعت ها} ساعت ها پیش", "today" => "امروز", "yesterday" => "دیروز", +"{days} days ago" => "{روزها} روزهای پیش", "last month" => "ماه قبل", +"{months} months ago" => "{ماه ها} ماه ها پیش", "months ago" => "ماه‌های قبل", "last year" => "سال قبل", "years ago" => "سال‌های قبل", +"Choose" => "انتخاب کردن", "Cancel" => "منصر٠شدن", "No" => "نه", "Yes" => "بله", "Ok" => "قبول", +"The object type is not specified." => "نوع Ø´ÛŒ تعیین نشده است.", "Error" => "خطا", +"The app name is not specified." => "نام برنامه تعیین نشده است.", +"The required file {file} is not installed!" => "پرونده { پرونده} درخواست شده نصب نشده است !", +"Share" => "اشتراک‌گزاری", +"Error while sharing" => "خطا Ø¯Ø±ØØ§Ù„ به اشتراک گذاشتن", +"Error while unsharing" => "خطا Ø¯Ø±ØØ§Ù„ لغو اشتراک", +"Error while changing permissions" => "خطا در ØØ§Ù„ تغییر مجوز", +"Shared with you and the group {group} by {owner}" => "به اشتراک گذاشته شده با شما Ùˆ گروه {گروه} توسط {دارنده}", +"Shared with you by {owner}" => "به اشتراک گذاشته شده با شما توسط { دارنده}", +"Share with" => "به اشتراک گذاشتن با", +"Share with link" => "به اشتراک گذاشتن با پیوند", +"Password protect" => "نگهداری کردن رمز عبور", "Password" => "گذرواژه", +"Email link to person" => "پیوند ایمیل برای شخص.", +"Set expiration date" => "تنظیم تاریخ انقضا", +"Expiration date" => "تاریخ انقضا", +"Share via email:" => "از طریق ایمیل به اشتراک بگذارید :", +"No people found" => "کسی ÛŒØ§ÙØª نشد", +"Resharing is not allowed" => "اشتراک گذاری مجدد مجاز نمی باشد", +"Shared in {item} with {user}" => "به اشتراک گذاشته شده در {بخش} با {کاربر}", "Unshare" => "لغو اشتراک", +"can edit" => "Ù…ÛŒ توان ویرایش کرد", +"access control" => "کنترل دسترسی", "create" => "ایجاد", +"update" => "به روز", +"delete" => "پاک کردن", +"share" => "به اشتراک گذاشتن", +"Password protected" => "نگهداری از رمز عبور", +"Error unsetting expiration date" => "خطا در تنظیم نکردن تاریخ انقضا ", +"Error setting expiration date" => "خطا در تنظیم تاریخ انقضا", "ownCloud password reset" => "پسورد ابرهای شما تغییرکرد", "Use the following link to reset your password: {link}" => "از لینک زیر جهت دوباره سازی پسورد Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید :\n{link}", "You will receive a link to reset your password via Email." => "شما یک نامه الکترونیکی ØØ§ÙˆÛŒ یک لینک جهت بازسازی گذرواژه Ø¯Ø±ÛŒØ§ÙØª خواهید کرد.", +"Reset email send." => "تنظیم مجدد ایمیل را Ø¨ÙØ±Ø³ØªÛŒØ¯.", +"Request failed!" => "درخواست رد شده است !", "Username" => "شناسه", "Request reset" => "درخواست دوباره سازی", "Your password was reset" => "گذرواژه شما تغییرکرد", @@ -38,6 +101,7 @@ "Edit categories" => "ویرایش گروه ها", "Add" => "Ø§ÙØ²ÙˆØ¯Ù†", "Security Warning" => "اخطار امنیتی", +"No secure random number generator is available, please enable the PHP OpenSSL extension." => "هیچ مولد تصادÙÛŒ امن در دسترس نیست، Ù„Ø·ÙØ§ ÙØ±Ù…ت PHP OpenSSL را ÙØ¹Ø§Ù„ نمایید.", "Create an <strong>admin account</strong>" => "Ù„Ø·ÙØ§ یک <strong> شناسه برای مدیر</strong> بسازید", "Advanced" => "ØØ±ÙÙ‡ ای", "Data folder" => "پوشه اطلاعاتی", @@ -46,29 +110,14 @@ "Database user" => "شناسه پایگاه داده", "Database password" => "پسورد پایگاه داده", "Database name" => "نام پایگاه داده", +"Database tablespace" => "جدول پایگاه داده", "Database host" => "هاست پایگاه داده", "Finish setup" => "اتمام نصب", -"Sunday" => "یکشنبه", -"Monday" => "دوشنبه", -"Tuesday" => "سه شنبه", -"Wednesday" => "چهارشنبه", -"Thursday" => "پنجشنبه", -"Friday" => "جمعه", -"Saturday" => "شنبه", -"January" => "ژانویه", -"February" => "ÙØ¨Ø±ÛŒÙ‡", -"March" => "مارس", -"April" => "آوریل", -"May" => "Ù…ÛŒ", -"June" => "ژوئن", -"July" => "جولای", -"August" => "آگوست", -"September" => "سپتامبر", -"October" => "اکتبر", -"November" => "نوامبر", -"December" => "دسامبر", "web services under your control" => "سرویس وب ØªØØª کنترل شما", "Log out" => "خروج", +"Automatic logon rejected!" => "ورود به سیستم اتوماتیک ردشد!", +"If you did not change your password recently, your account may be compromised!" => "اگر شما اخیرا رمزعبور را تغییر نداده اید، ØØ³Ø§Ø¨ شما در معرض خطر Ù…ÛŒ باشد !", +"Please change your password to secure your account again." => "Ù„Ø·ÙØ§ رمز عبور خود را تغییر دهید تا مجددا ØØ³Ø§Ø¨ شما در امان باشد.", "Lost your password?" => "آیا گذرواژه تان را به یاد نمی آورید؟", "remember" => "بیاد آوری", "Log in" => "ورود", diff --git a/core/l10n/fi_FI.php b/core/l10n/fi_FI.php index 751293e1fd5..1f2568f9513 100644 --- a/core/l10n/fi_FI.php +++ b/core/l10n/fi_FI.php @@ -8,6 +8,25 @@ "Error adding %s to favorites." => "Virhe lisätessä kohdetta %s suosikkeihin.", "No categories selected for deletion." => "Luokkia ei valittu poistettavaksi.", "Error removing %s from favorites." => "Virhe poistaessa kohdetta %s suosikeista.", +"Sunday" => "Sunnuntai", +"Monday" => "Maanantai", +"Tuesday" => "Tiistai", +"Wednesday" => "Keskiviikko", +"Thursday" => "Torstai", +"Friday" => "Perjantai", +"Saturday" => "Lauantai", +"January" => "Tammikuu", +"February" => "Helmikuu", +"March" => "Maaliskuu", +"April" => "Huhtikuu", +"May" => "Toukokuu", +"June" => "Kesäkuu", +"July" => "Heinäkuu", +"August" => "Elokuu", +"September" => "Syyskuu", +"October" => "Lokakuu", +"November" => "Marraskuu", +"December" => "Joulukuu", "Settings" => "Asetukset", "seconds ago" => "sekuntia sitten", "1 minute ago" => "1 minuutti sitten", @@ -30,6 +49,7 @@ "Error" => "Virhe", "The app name is not specified." => "Sovelluksen nimeä ei ole määritelty.", "The required file {file} is not installed!" => "Vaadittua tiedostoa {file} ei ole asennettu!", +"Share" => "Jaa", "Error while sharing" => "Virhe jaettaessa", "Error while unsharing" => "Virhe jakoa peruttaessa", "Error while changing permissions" => "Virhe oikeuksia muuttaessa", @@ -58,6 +78,8 @@ "Error setting expiration date" => "Virhe päättymispäivää asettaessa", "Sending ..." => "Lähetetään...", "Email sent" => "Sähköposti lähetetty", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "Päivitys epäonnistui. Ilmoita ongelmasta <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud-yhteisölle</a>.", +"The update was successful. Redirecting you to ownCloud now." => "Päivitys onnistui. Selain ohjautuu nyt ownCloudiisi.", "ownCloud password reset" => "ownCloud-salasanan nollaus", "Use the following link to reset your password: {link}" => "Voit palauttaa salasanasi seuraavassa osoitteessa: {link}", "You will receive a link to reset your password via Email." => "Saat sähköpostitse linkin nollataksesi salasanan.", @@ -91,25 +113,6 @@ "Database tablespace" => "Tietokannan taulukkotila", "Database host" => "Tietokantapalvelin", "Finish setup" => "Viimeistele asennus", -"Sunday" => "Sunnuntai", -"Monday" => "Maanantai", -"Tuesday" => "Tiistai", -"Wednesday" => "Keskiviikko", -"Thursday" => "Torstai", -"Friday" => "Perjantai", -"Saturday" => "Lauantai", -"January" => "Tammikuu", -"February" => "Helmikuu", -"March" => "Maaliskuu", -"April" => "Huhtikuu", -"May" => "Toukokuu", -"June" => "Kesäkuu", -"July" => "Heinäkuu", -"August" => "Elokuu", -"September" => "Syyskuu", -"October" => "Lokakuu", -"November" => "Marraskuu", -"December" => "Joulukuu", "web services under your control" => "verkkopalvelut hallinnassasi", "Log out" => "Kirjaudu ulos", "Automatic logon rejected!" => "Automaattinen sisäänkirjautuminen hylättiin!", diff --git a/core/l10n/fr.php b/core/l10n/fr.php index 39269e43b5d..202203753d2 100644 --- a/core/l10n/fr.php +++ b/core/l10n/fr.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Erreur lors de l'ajout de %s aux favoris.", "No categories selected for deletion." => "Aucune catégorie sélectionnée pour suppression", "Error removing %s from favorites." => "Erreur lors de la suppression de %s des favoris.", +"Sunday" => "Dimanche", +"Monday" => "Lundi", +"Tuesday" => "Mardi", +"Wednesday" => "Mercredi", +"Thursday" => "Jeudi", +"Friday" => "Vendredi", +"Saturday" => "Samedi", +"January" => "janvier", +"February" => "février", +"March" => "mars", +"April" => "avril", +"May" => "mai", +"June" => "juin", +"July" => "juillet", +"August" => "août", +"September" => "septembre", +"October" => "octobre", +"November" => "novembre", +"December" => "décembre", "Settings" => "Paramètres", "seconds ago" => "il y a quelques secondes", "1 minute ago" => "il y a une minute", @@ -34,6 +53,7 @@ "Error" => "Erreur", "The app name is not specified." => "Le nom de l'application n'est pas spécifié.", "The required file {file} is not installed!" => "Le fichier requis {file} n'est pas installé !", +"Share" => "Partager", "Error while sharing" => "Erreur lors de la mise en partage", "Error while unsharing" => "Erreur lors de l'annulation du partage", "Error while changing permissions" => "Erreur lors du changement des permissions", @@ -63,6 +83,8 @@ "Error setting expiration date" => "Erreur lors de la spécification de la date d'expiration", "Sending ..." => "En cours d'envoi ...", "Email sent" => "Email envoyé", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "La mise à jour a échoué. Veuillez signaler ce problème à la <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">communauté ownCloud</a>.", +"The update was successful. Redirecting you to ownCloud now." => "La mise à jour a réussi. Vous êtes redirigé maintenant vers ownCloud.", "ownCloud password reset" => "Réinitialisation de votre mot de passe Owncloud", "Use the following link to reset your password: {link}" => "Utilisez le lien suivant pour réinitialiser votre mot de passe : {link}", "You will receive a link to reset your password via Email." => "Vous allez recevoir un e-mail contenant un lien pour réinitialiser votre mot de passe.", @@ -98,25 +120,6 @@ "Database tablespace" => "Tablespaces de la base de données", "Database host" => "Serveur de la base de données", "Finish setup" => "Terminer l'installation", -"Sunday" => "Dimanche", -"Monday" => "Lundi", -"Tuesday" => "Mardi", -"Wednesday" => "Mercredi", -"Thursday" => "Jeudi", -"Friday" => "Vendredi", -"Saturday" => "Samedi", -"January" => "janvier", -"February" => "février", -"March" => "mars", -"April" => "avril", -"May" => "mai", -"June" => "juin", -"July" => "juillet", -"August" => "août", -"September" => "septembre", -"October" => "octobre", -"November" => "novembre", -"December" => "décembre", "web services under your control" => "services web sous votre contrôle", "Log out" => "Se déconnecter", "Automatic logon rejected!" => "Connexion automatique rejetée !", diff --git a/core/l10n/gl.php b/core/l10n/gl.php index 2642debb288..e96d6962c90 100644 --- a/core/l10n/gl.php +++ b/core/l10n/gl.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Produciuse un erro ao engadir %s aos favoritos.", "No categories selected for deletion." => "Non hai categorÃas seleccionadas para eliminar.", "Error removing %s from favorites." => "Produciuse un erro ao eliminar %s dos favoritos.", +"Sunday" => "Domingo", +"Monday" => "Luns", +"Tuesday" => "Martes", +"Wednesday" => "Mércores", +"Thursday" => "Xoves", +"Friday" => "Venres", +"Saturday" => "Sábado", +"January" => "xaneiro", +"February" => "febreiro", +"March" => "marzo", +"April" => "abril", +"May" => "maio", +"June" => "xuño", +"July" => "xullo", +"August" => "agosto", +"September" => "setembro", +"October" => "outubro", +"November" => "novembro", +"December" => "decembro", "Settings" => "Configuracións", "seconds ago" => "segundos atrás", "1 minute ago" => "hai 1 minuto", @@ -34,6 +53,7 @@ "Error" => "Erro", "The app name is not specified." => "Non se especificou o nome do aplicativo.", "The required file {file} is not installed!" => "Non está instalado o ficheiro {file} que se precisa", +"Share" => "Compartir", "Error while sharing" => "Produciuse un erro ao compartir", "Error while unsharing" => "Produciuse un erro ao deixar de compartir", "Error while changing permissions" => "Produciuse un erro ao cambiar os permisos", @@ -98,25 +118,6 @@ "Database tablespace" => "Táboa de espazos da base de datos", "Database host" => "Servidor da base de datos", "Finish setup" => "Rematar a configuración", -"Sunday" => "Domingo", -"Monday" => "Luns", -"Tuesday" => "Martes", -"Wednesday" => "Mércores", -"Thursday" => "Xoves", -"Friday" => "Venres", -"Saturday" => "Sábado", -"January" => "xaneiro", -"February" => "febreiro", -"March" => "marzo", -"April" => "abril", -"May" => "maio", -"June" => "xuño", -"July" => "xullo", -"August" => "agosto", -"September" => "setembro", -"October" => "outubro", -"November" => "novembro", -"December" => "decembro", "web services under your control" => "servizos web baixo o seu control", "Log out" => "Desconectar", "Automatic logon rejected!" => "Rexeitouse a entrada automática", diff --git a/core/l10n/he.php b/core/l10n/he.php index 59eb3ae14d4..b7292c6edee 100644 --- a/core/l10n/he.php +++ b/core/l10n/he.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "×ירעה שגי××” בעת הוספת %s למועדפי×.", "No categories selected for deletion." => "×œ× × ×‘×—×¨×• קטגוריות למחיקה", "Error removing %s from favorites." => "שגי××” בהסרת %s מהמועדפי×.", +"Sunday" => "×™×•× ×¨×שון", +"Monday" => "×™×•× ×©× ×™", +"Tuesday" => "×™×•× ×©×œ×™×©×™", +"Wednesday" => "×™×•× ×¨×‘×™×¢×™", +"Thursday" => "×™×•× ×—×ž×™×©×™", +"Friday" => "×™×•× ×©×™×©×™", +"Saturday" => "שבת", +"January" => "×™× ×•×ר", +"February" => "פברו×ר", +"March" => "מרץ", +"April" => "×פריל", +"May" => "מ××™", +"June" => "×™×•× ×™", +"July" => "יולי", +"August" => "×וגוסט", +"September" => "ספטמבר", +"October" => "×וקטובר", +"November" => "× ×•×‘×ž×‘×¨", +"December" => "דצמבר", "Settings" => "הגדרות", "seconds ago" => "×©× ×™×•×ª", "1 minute ago" => "×œ×¤× ×™ דקה ×חת", @@ -34,6 +53,7 @@ "Error" => "שגי××”", "The app name is not specified." => "×©× ×”×™×™×©×•× ×œ× ×¦×•×™×Ÿ.", "The required file {file} is not installed!" => "הקובץ ×”× ×“×¨×© {file} ××™× ×• מותקן!", +"Share" => "שתף", "Error while sharing" => "שגי××” במהלך השיתוף", "Error while unsharing" => "שגי××” במהלך ביטול השיתוף", "Error while changing permissions" => "שגי××” במהלך ×©×™× ×•×™ ההגדרות", @@ -98,25 +118,6 @@ "Database tablespace" => "מרחב הכתובות של מסד ×”× ×ª×•× ×™×", "Database host" => "שרת בסיס × ×ª×•× ×™×", "Finish setup" => "×¡×™×•× ×”×ª×§× ×”", -"Sunday" => "×™×•× ×¨×שון", -"Monday" => "×™×•× ×©× ×™", -"Tuesday" => "×™×•× ×©×œ×™×©×™", -"Wednesday" => "×™×•× ×¨×‘×™×¢×™", -"Thursday" => "×™×•× ×—×ž×™×©×™", -"Friday" => "×™×•× ×©×™×©×™", -"Saturday" => "שבת", -"January" => "×™× ×•×ר", -"February" => "פברו×ר", -"March" => "מרץ", -"April" => "×פריל", -"May" => "מ××™", -"June" => "×™×•× ×™", -"July" => "יולי", -"August" => "×וגוסט", -"September" => "ספטמבר", -"October" => "×וקטובר", -"November" => "× ×•×‘×ž×‘×¨", -"December" => "דצמבר", "web services under your control" => "שירותי רשת בשליטתך", "Log out" => "×”×ª× ×ª×§×•×ª", "Automatic logon rejected!" => "בקשת ×”×›× ×™×¡×” ×”×וטומטית × ×“×—×ª×”!", diff --git a/core/l10n/hr.php b/core/l10n/hr.php index 43dbbe51ae0..78b767305a3 100644 --- a/core/l10n/hr.php +++ b/core/l10n/hr.php @@ -2,6 +2,25 @@ "No category to add?" => "Nemate kategorija koje možete dodati?", "This category already exists: " => "Ova kategorija već postoji: ", "No categories selected for deletion." => "Nema odabranih kategorija za brisanje.", +"Sunday" => "nedelja", +"Monday" => "ponedeljak", +"Tuesday" => "utorak", +"Wednesday" => "srijeda", +"Thursday" => "Äetvrtak", +"Friday" => "petak", +"Saturday" => "subota", +"January" => "SijeÄanj", +"February" => "VeljaÄa", +"March" => "Ožujak", +"April" => "Travanj", +"May" => "Svibanj", +"June" => "Lipanj", +"July" => "Srpanj", +"August" => "Kolovoz", +"September" => "Rujan", +"October" => "Listopad", +"November" => "Studeni", +"December" => "Prosinac", "Settings" => "Postavke", "seconds ago" => "sekundi prije", "today" => "danas", @@ -16,6 +35,7 @@ "Yes" => "Da", "Ok" => "U redu", "Error" => "PogreÅ¡ka", +"Share" => "Podijeli", "Error while sharing" => "GreÅ¡ka prilikom djeljenja", "Error while unsharing" => "GreÅ¡ka prilikom iskljuÄivanja djeljenja", "Error while changing permissions" => "GreÅ¡ka prilikom promjena prava", @@ -67,25 +87,6 @@ "Database tablespace" => "Database tablespace", "Database host" => "Poslužitelj baze podataka", "Finish setup" => "ZavrÅ¡i postavljanje", -"Sunday" => "nedelja", -"Monday" => "ponedeljak", -"Tuesday" => "utorak", -"Wednesday" => "srijeda", -"Thursday" => "Äetvrtak", -"Friday" => "petak", -"Saturday" => "subota", -"January" => "SijeÄanj", -"February" => "VeljaÄa", -"March" => "Ožujak", -"April" => "Travanj", -"May" => "Svibanj", -"June" => "Lipanj", -"July" => "Srpanj", -"August" => "Kolovoz", -"September" => "Rujan", -"October" => "Listopad", -"November" => "Studeni", -"December" => "Prosinac", "web services under your control" => "web usluge pod vaÅ¡om kontrolom", "Log out" => "Odjava", "Lost your password?" => "Izgubili ste lozinku?", diff --git a/core/l10n/hu_HU.php b/core/l10n/hu_HU.php index a9e20fc6466..30ddc7b8677 100644 --- a/core/l10n/hu_HU.php +++ b/core/l10n/hu_HU.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Nem sikerült a kedvencekhez adni ezt: %s", "No categories selected for deletion." => "Nincs törlésre jelölt kategória", "Error removing %s from favorites." => "Nem sikerült a kedvencekbÅ‘l törölni ezt: %s", +"Sunday" => "vasárnap", +"Monday" => "hétfÅ‘", +"Tuesday" => "kedd", +"Wednesday" => "szerda", +"Thursday" => "csütörtök", +"Friday" => "péntek", +"Saturday" => "szombat", +"January" => "január", +"February" => "február", +"March" => "március", +"April" => "április", +"May" => "május", +"June" => "június", +"July" => "július", +"August" => "augusztus", +"September" => "szeptember", +"October" => "október", +"November" => "november", +"December" => "december", "Settings" => "BeállÃtások", "seconds ago" => "pár másodperce", "1 minute ago" => "1 perce", @@ -34,6 +53,7 @@ "Error" => "Hiba", "The app name is not specified." => "Az alkalmazás neve nincs megadva.", "The required file {file} is not installed!" => "A szükséges fájl: {file} nincs telepÃtve!", +"Share" => "Megosztás", "Error while sharing" => "Nem sikerült létrehozni a megosztást", "Error while unsharing" => "Nem sikerült visszavonni a megosztást", "Error while changing permissions" => "Nem sikerült módosÃtani a jogosultságokat", @@ -42,7 +62,7 @@ "Share with" => "Kivel osztom meg", "Share with link" => "Link megadásával osztom meg", "Password protect" => "Jelszóval is védem", -"Password" => "Jelszó (tetszÅ‘leges)", +"Password" => "Jelszó", "Email link to person" => "Email cÃmre küldjük el", "Send" => "Küldjük el", "Set expiration date" => "Legyen lejárati idÅ‘", @@ -98,25 +118,6 @@ "Database tablespace" => "Az adatbázis táblázattér (tablespace)", "Database host" => "Adatbázis szerver", "Finish setup" => "A beállÃtások befejezése", -"Sunday" => "vasárnap", -"Monday" => "hétfÅ‘", -"Tuesday" => "kedd", -"Wednesday" => "szerda", -"Thursday" => "csütörtök", -"Friday" => "péntek", -"Saturday" => "szombat", -"January" => "január", -"February" => "február", -"March" => "március", -"April" => "április", -"May" => "május", -"June" => "június", -"July" => "július", -"August" => "augusztus", -"September" => "szeptember", -"October" => "október", -"November" => "november", -"December" => "december", "web services under your control" => "webszolgáltatások saját kézben", "Log out" => "Kilépés", "Automatic logon rejected!" => "Az automatikus bejelentkezés sikertelen!", diff --git a/core/l10n/ia.php b/core/l10n/ia.php index d614f8381af..7f2eac17367 100644 --- a/core/l10n/ia.php +++ b/core/l10n/ia.php @@ -1,7 +1,27 @@ <?php $TRANSLATIONS = array( "This category already exists: " => "Iste categoria jam existe:", +"Sunday" => "Dominica", +"Monday" => "Lunedi", +"Tuesday" => "Martedi", +"Wednesday" => "Mercuridi", +"Thursday" => "Jovedi", +"Friday" => "Venerdi", +"Saturday" => "Sabbato", +"January" => "januario", +"February" => "Februario", +"March" => "Martio", +"April" => "April", +"May" => "Mai", +"June" => "Junio", +"July" => "Julio", +"August" => "Augusto", +"September" => "Septembre", +"October" => "Octobre", +"November" => "Novembre", +"December" => "Decembre", "Settings" => "Configurationes", "Cancel" => "Cancellar", +"Share" => "Compartir", "Password" => "Contrasigno", "ownCloud password reset" => "Reinitialisation del contrasigno de ownCLoud", "Username" => "Nomine de usator", @@ -28,25 +48,6 @@ "Database password" => "Contrasigno de base de datos", "Database name" => "Nomine de base de datos", "Database host" => "Hospite de base de datos", -"Sunday" => "Dominica", -"Monday" => "Lunedi", -"Tuesday" => "Martedi", -"Wednesday" => "Mercuridi", -"Thursday" => "Jovedi", -"Friday" => "Venerdi", -"Saturday" => "Sabbato", -"January" => "januario", -"February" => "Februario", -"March" => "Martio", -"April" => "April", -"May" => "Mai", -"June" => "Junio", -"July" => "Julio", -"August" => "Augusto", -"September" => "Septembre", -"October" => "Octobre", -"November" => "Novembre", -"December" => "Decembre", "web services under your control" => "servicios web sub tu controlo", "Log out" => "Clauder le session", "Lost your password?" => "Tu perdeva le contrasigno?", diff --git a/core/l10n/id.php b/core/l10n/id.php index ee5fad95217..896d444e833 100644 --- a/core/l10n/id.php +++ b/core/l10n/id.php @@ -2,6 +2,25 @@ "No category to add?" => "Tidak ada kategori yang akan ditambahkan?", "This category already exists: " => "Kategori ini sudah ada:", "No categories selected for deletion." => "Tidak ada kategori terpilih untuk penghapusan.", +"Sunday" => "minggu", +"Monday" => "senin", +"Tuesday" => "selasa", +"Wednesday" => "rabu", +"Thursday" => "kamis", +"Friday" => "jumat", +"Saturday" => "sabtu", +"January" => "Januari", +"February" => "Februari", +"March" => "Maret", +"April" => "April", +"May" => "Mei", +"June" => "Juni", +"July" => "Juli", +"August" => "Agustus", +"September" => "September", +"October" => "Oktober", +"November" => "Nopember", +"December" => "Desember", "Settings" => "Setelan", "seconds ago" => "beberapa detik yang lalu", "1 minute ago" => "1 menit lalu", @@ -17,6 +36,7 @@ "Yes" => "Ya", "Ok" => "Oke", "Error" => "gagal", +"Share" => "berbagi", "Error while sharing" => "gagal ketika membagikan", "Error while unsharing" => "gagal ketika membatalkan pembagian", "Error while changing permissions" => "gagal ketika merubah perijinan", @@ -73,25 +93,6 @@ "Database tablespace" => "tablespace basis data", "Database host" => "Host database", "Finish setup" => "Selesaikan instalasi", -"Sunday" => "minggu", -"Monday" => "senin", -"Tuesday" => "selasa", -"Wednesday" => "rabu", -"Thursday" => "kamis", -"Friday" => "jumat", -"Saturday" => "sabtu", -"January" => "Januari", -"February" => "Februari", -"March" => "Maret", -"April" => "April", -"May" => "Mei", -"June" => "Juni", -"July" => "Juli", -"August" => "Agustus", -"September" => "September", -"October" => "Oktober", -"November" => "Nopember", -"December" => "Desember", "web services under your control" => "web service dibawah kontrol anda", "Log out" => "Keluar", "Automatic logon rejected!" => "login otomatis ditolak!", diff --git a/core/l10n/is.php b/core/l10n/is.php index e810eb359fd..98766efc2c9 100644 --- a/core/l10n/is.php +++ b/core/l10n/is.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Villa við að bæta %s við eftirlæti.", "No categories selected for deletion." => "Enginn flokkur valinn til eyðingar.", "Error removing %s from favorites." => "Villa við að fjarlægja %s úr eftirlæti.", +"Sunday" => "Sunnudagur", +"Monday" => "Mánudagur", +"Tuesday" => "Þriðjudagur", +"Wednesday" => "Miðvikudagur", +"Thursday" => "Fimmtudagur", +"Friday" => "Föstudagur", +"Saturday" => "Laugardagur", +"January" => "Janúar", +"February" => "Febrúar", +"March" => "Mars", +"April" => "AprÃl", +"May" => "MaÃ", +"June" => "JúnÃ", +"July" => "JúlÃ", +"August" => "Ãgúst", +"September" => "September", +"October" => "Október", +"November" => "Nóvember", +"December" => "Desember", "Settings" => "Stillingar", "seconds ago" => "sek sÃðan", "1 minute ago" => "1 min sÃðan", @@ -34,6 +53,7 @@ "Error" => "Villa", "The app name is not specified." => "Nafn forrits ekki tilgreint", "The required file {file} is not installed!" => "Umbeðina skráin {file} ekki tiltæk!", +"Share" => "Deila", "Error while sharing" => "Villa við deilingu", "Error while unsharing" => "Villa við að hætta deilingu", "Error while changing permissions" => "Villa við að breyta aðgangsheimildum", @@ -98,25 +118,6 @@ "Database tablespace" => "Töflusvæði gagnagrunns", "Database host" => "Netþjónn gagnagrunns", "Finish setup" => "Virkja uppsetningu", -"Sunday" => "Sunnudagur", -"Monday" => "Mánudagur", -"Tuesday" => "Þriðjudagur", -"Wednesday" => "Miðvikudagur", -"Thursday" => "Fimmtudagur", -"Friday" => "Föstudagur", -"Saturday" => "Laugardagur", -"January" => "Janúar", -"February" => "Febrúar", -"March" => "Mars", -"April" => "AprÃl", -"May" => "MaÃ", -"June" => "JúnÃ", -"July" => "JúlÃ", -"August" => "Ãgúst", -"September" => "September", -"October" => "Október", -"November" => "Nóvember", -"December" => "Desember", "web services under your control" => "vefþjónusta undir þinni stjórn", "Log out" => "Útskrá", "Automatic logon rejected!" => "Sjálfvirkri innskráningu hafnað!", diff --git a/core/l10n/it.php b/core/l10n/it.php index 89b6a7952a9..ec094f643a4 100644 --- a/core/l10n/it.php +++ b/core/l10n/it.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Errore durante l'aggiunta di %s ai preferiti.", "No categories selected for deletion." => "Nessuna categoria selezionata per l'eliminazione.", "Error removing %s from favorites." => "Errore durante la rimozione di %s dai preferiti.", +"Sunday" => "Domenica", +"Monday" => "Lunedì", +"Tuesday" => "Martedì", +"Wednesday" => "Mercoledì", +"Thursday" => "Giovedì", +"Friday" => "Venerdì", +"Saturday" => "Sabato", +"January" => "Gennaio", +"February" => "Febbraio", +"March" => "Marzo", +"April" => "Aprile", +"May" => "Maggio", +"June" => "Giugno", +"July" => "Luglio", +"August" => "Agosto", +"September" => "Settembre", +"October" => "Ottobre", +"November" => "Novembre", +"December" => "Dicembre", "Settings" => "Impostazioni", "seconds ago" => "secondi fa", "1 minute ago" => "Un minuto fa", @@ -34,6 +53,8 @@ "Error" => "Errore", "The app name is not specified." => "Il nome dell'applicazione non è specificato.", "The required file {file} is not installed!" => "Il file richiesto {file} non è installato!", +"Share" => "Condividi", +"Shared" => "Condivisi", "Error while sharing" => "Errore durante la condivisione", "Error while unsharing" => "Errore durante la rimozione della condivisione", "Error while changing permissions" => "Errore durante la modifica dei permessi", @@ -63,6 +84,8 @@ "Error setting expiration date" => "Errore durante l'impostazione della data di scadenza", "Sending ..." => "Invio in corso...", "Email sent" => "Messaggio inviato", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "L'aggiornamento non è riuscito. Segnala il problema alla <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">comunità di ownCloud</a>.", +"The update was successful. Redirecting you to ownCloud now." => "L'aggiornamento è stato effettuato correttamente. Stai per essere reindirizzato a ownCloud.", "ownCloud password reset" => "Ripristino password di ownCloud", "Use the following link to reset your password: {link}" => "Usa il collegamento seguente per ripristinare la password: {link}", "You will receive a link to reset your password via Email." => "Riceverai un collegamento per ripristinare la tua password via email", @@ -98,34 +121,15 @@ "Database tablespace" => "Spazio delle tabelle del database", "Database host" => "Host del database", "Finish setup" => "Termina la configurazione", -"Sunday" => "Domenica", -"Monday" => "Lunedì", -"Tuesday" => "Martedì", -"Wednesday" => "Mercoledì", -"Thursday" => "Giovedì", -"Friday" => "Venerdì", -"Saturday" => "Sabato", -"January" => "Gennaio", -"February" => "Febbraio", -"March" => "Marzo", -"April" => "Aprile", -"May" => "Maggio", -"June" => "Giugno", -"July" => "Luglio", -"August" => "Agosto", -"September" => "Settembre", -"October" => "Ottobre", -"November" => "Novembre", -"December" => "Dicembre", "web services under your control" => "servizi web nelle tue mani", "Log out" => "Esci", "Automatic logon rejected!" => "Accesso automatico rifiutato.", -"If you did not change your password recently, your account may be compromised!" => "Se non hai cambiato la password recentemente, il tuo account potrebbe essere stato compromesso.", +"If you did not change your password recently, your account may be compromised!" => "Se non hai cambiato la password recentemente, il tuo account potrebbe essere compromesso.", "Please change your password to secure your account again." => "Cambia la password per rendere nuovamente sicuro il tuo account.", "Lost your password?" => "Hai perso la password?", "remember" => "ricorda", "Log in" => "Accedi", "prev" => "precedente", "next" => "successivo", -"Updating ownCloud to version %s, this may take a while." => "Aggiornamento di ownCloud alla versione %s in corso, potrebbe richiedere del tempo." +"Updating ownCloud to version %s, this may take a while." => "Aggiornamento di ownCloud alla versione %s in corso, ciò potrebbe richiedere del tempo." ); diff --git a/core/l10n/ja_JP.php b/core/l10n/ja_JP.php index 7d4baf94583..155c201d9b7 100644 --- a/core/l10n/ja_JP.php +++ b/core/l10n/ja_JP.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "ãŠæ°—ã«å…¥ã‚Šã« %s ã‚’è¿½åŠ ã‚¨ãƒ©ãƒ¼", "No categories selected for deletion." => "削除ã™ã‚‹ã‚«ãƒ†ã‚´ãƒªãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。", "Error removing %s from favorites." => "ãŠæ°—ã«å…¥ã‚Šã‹ã‚‰ %s ã®å‰Šé™¤ã‚¨ãƒ©ãƒ¼", +"Sunday" => "æ—¥", +"Monday" => "月", +"Tuesday" => "ç«", +"Wednesday" => "æ°´", +"Thursday" => "木", +"Friday" => "金", +"Saturday" => "土", +"January" => "1月", +"February" => "2月", +"March" => "3月", +"April" => "4月", +"May" => "5月", +"June" => "6月", +"July" => "7月", +"August" => "8月", +"September" => "9月", +"October" => "10月", +"November" => "11月", +"December" => "12月", "Settings" => "è¨å®š", "seconds ago" => "ç§’å‰", "1 minute ago" => "1 分å‰", @@ -34,6 +53,8 @@ "Error" => "エラー", "The app name is not specified." => "アプリåãŒã—ã¦ã„ã•れã¦ã„ã¾ã›ã‚“。", "The required file {file} is not installed!" => "å¿…è¦ãªãƒ•ァイル {file} ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã¾ã›ã‚“ï¼", +"Share" => "共有", +"Shared" => "共有ä¸", "Error while sharing" => "共有ã§ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿ", "Error while unsharing" => "共有解除ã§ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿ", "Error while changing permissions" => "権é™å¤‰æ›´ã§ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿ", @@ -63,6 +84,8 @@ "Error setting expiration date" => "有効期é™ã®è¨å®šã§ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿ", "Sending ..." => "é€ä¿¡ä¸...", "Email sent" => "メールをé€ä¿¡ã—ã¾ã—ãŸ", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "æ›´æ–°ã«æˆåŠŸã—ã¾ã—ãŸã€‚ã“ã®å•題を <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a> ã«ãƒ¬ãƒãƒ¼ãƒˆã—ã¦ãã ã•ã„。", +"The update was successful. Redirecting you to ownCloud now." => "æ›´æ–°ã«æˆåŠŸã—ã¾ã—ãŸã€‚今ã™ãownCloudã«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã—ã¾ã™ã€‚", "ownCloud password reset" => "ownCloudã®ãƒ‘スワードをリセットã—ã¾ã™", "Use the following link to reset your password: {link}" => "パスワードをリセットã™ã‚‹ã«ã¯æ¬¡ã®ãƒªãƒ³ã‚¯ã‚’クリックã—ã¦ä¸‹ã•ã„: {link}", "You will receive a link to reset your password via Email." => "メールã§ãƒ‘スワードをリセットã™ã‚‹ãƒªãƒ³ã‚¯ãŒå±Šãã¾ã™ã€‚", @@ -98,25 +121,6 @@ "Database tablespace" => "データベースã®è¡¨é ˜åŸŸ", "Database host" => "データベースã®ãƒ›ã‚¹ãƒˆå", "Finish setup" => "セットアップを完了ã—ã¾ã™", -"Sunday" => "æ—¥", -"Monday" => "月", -"Tuesday" => "ç«", -"Wednesday" => "æ°´", -"Thursday" => "木", -"Friday" => "金", -"Saturday" => "土", -"January" => "1月", -"February" => "2月", -"March" => "3月", -"April" => "4月", -"May" => "5月", -"June" => "6月", -"July" => "7月", -"August" => "8月", -"September" => "9月", -"October" => "10月", -"November" => "11月", -"December" => "12月", "web services under your control" => "管ç†ä¸‹ã«ã‚るウェブサービス", "Log out" => "ãƒã‚°ã‚¢ã‚¦ãƒˆ", "Automatic logon rejected!" => "自動ãƒã‚°ã‚¤ãƒ³ã¯æ‹’å¦ã•れã¾ã—ãŸï¼", diff --git a/core/l10n/ka_GE.php b/core/l10n/ka_GE.php index aafdacab4c6..ab4045601f9 100644 --- a/core/l10n/ka_GE.php +++ b/core/l10n/ka_GE.php @@ -2,6 +2,25 @@ "No category to add?" => "áƒáƒ áƒáƒ ის კáƒáƒ¢áƒ”გáƒáƒ ირდáƒáƒ¡áƒáƒ›áƒáƒ¢áƒ”ბლáƒáƒ“?", "This category already exists: " => "კáƒáƒ¢áƒ”გáƒáƒ ირუკვე áƒáƒ სებáƒáƒ‘ს", "No categories selected for deletion." => "სáƒáƒ ედáƒáƒ¥áƒ¢áƒ˜áƒ ებელი კáƒáƒ¢áƒ”გáƒáƒ ირáƒáƒ áƒáƒ ის áƒáƒ ჩეული ", +"Sunday" => "კვირáƒ", +"Monday" => "áƒáƒ შáƒáƒ‘áƒáƒ—ი", +"Tuesday" => "სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი", +"Wednesday" => "áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი", +"Thursday" => "ხუთშáƒáƒ‘áƒáƒ—ი", +"Friday" => "პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი", +"Saturday" => "შáƒáƒ‘áƒáƒ—ი", +"January" => "იáƒáƒœáƒ•áƒáƒ ი", +"February" => "თებერვáƒáƒšáƒ˜", +"March" => "მáƒáƒ ტი", +"April" => "áƒáƒžáƒ ილი", +"May" => "მáƒáƒ˜áƒ¡áƒ˜", +"June" => "ივნისი", +"July" => "ივლისი", +"August" => "áƒáƒ’ვისტáƒ", +"September" => "სექტემბერი", +"October" => "áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი", +"November" => "ნáƒáƒ”მბერი", +"December" => "დეკემბერი", "Settings" => "პáƒáƒ áƒáƒ›áƒ”ტრები", "seconds ago" => "წáƒáƒ›áƒ˜áƒ¡ წინ", "1 minute ago" => "1 წუთის წინ", @@ -19,6 +38,7 @@ "Yes" => "კი", "Ok" => "დიáƒáƒ®", "Error" => "შეცდáƒáƒ›áƒ", +"Share" => "გáƒáƒ–იáƒáƒ ებáƒ", "Error while sharing" => "შეცდáƒáƒ›áƒ გáƒáƒ–იáƒáƒ ების დრáƒáƒ¡", "Error while unsharing" => "შეცდáƒáƒ›áƒ გáƒáƒ–იáƒáƒ ების გáƒáƒ£áƒ¥áƒ›áƒ”ბის დრáƒáƒ¡", "Error while changing permissions" => "შეცდáƒáƒ›áƒ დáƒáƒ¨áƒ•ების ცვლილების დრáƒáƒ¡", @@ -73,25 +93,6 @@ "Database tablespace" => "ბáƒáƒ–ის ცხრილის ზáƒáƒ›áƒ", "Database host" => "ბáƒáƒ–ის ჰáƒáƒ¡áƒ¢áƒ˜", "Finish setup" => "კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ˜áƒ¡ დáƒáƒ¡áƒ ულებáƒ", -"Sunday" => "კვირáƒ", -"Monday" => "áƒáƒ შáƒáƒ‘áƒáƒ—ი", -"Tuesday" => "სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი", -"Wednesday" => "áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი", -"Thursday" => "ხუთშáƒáƒ‘áƒáƒ—ი", -"Friday" => "პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი", -"Saturday" => "შáƒáƒ‘áƒáƒ—ი", -"January" => "იáƒáƒœáƒ•áƒáƒ ი", -"February" => "თებერვáƒáƒšáƒ˜", -"March" => "მáƒáƒ ტი", -"April" => "áƒáƒžáƒ ილი", -"May" => "მáƒáƒ˜áƒ¡áƒ˜", -"June" => "ივნისი", -"July" => "ივლისი", -"August" => "áƒáƒ’ვისტáƒ", -"September" => "სექტემბერი", -"October" => "áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი", -"November" => "ნáƒáƒ”მბერი", -"December" => "დეკემბერი", "web services under your control" => "თქვენი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ ქვეშ მყáƒáƒ¤áƒ˜ ვებ სერვისები", "Log out" => "გáƒáƒ›áƒáƒ¡áƒ•ლáƒ", "Automatic logon rejected!" => "áƒáƒ•ტáƒáƒ›áƒáƒ¢áƒ£áƒ ი შესვლრუáƒáƒ ყáƒáƒ¤áƒ˜áƒšáƒ˜áƒ!", diff --git a/core/l10n/ko.php b/core/l10n/ko.php index 3db5a501173..91c00c4a570 100644 --- a/core/l10n/ko.php +++ b/core/l10n/ko.php @@ -1,8 +1,8 @@ <?php $TRANSLATIONS = array( -"User %s shared a file with you" => "User %s ê°€ ë‹¹ì‹ ê³¼ 파ì¼ì„ ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤.", -"User %s shared a folder with you" => "User %s ê°€ ë‹¹ì‹ ê³¼ í´ë”를 ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤.", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "User %s ê°€ íŒŒì¼ \"%s\"를 ë‹¹ì‹ ê³¼ ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤. 다운로드는 여기서 %s í• ìˆ˜ 있습니다.", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "User %s ê°€ í´ë” \"%s\"를 ë‹¹ì‹ ê³¼ ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤. 다운로드는 여기서 %s í• ìˆ˜ 있습니다.", +"User %s shared a file with you" => "%s ë‹˜ì´ íŒŒì¼ì„ ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤", +"User %s shared a folder with you" => "%s ë‹˜ì´ í´ë”를 ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤", +"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s ë‹˜ì´ íŒŒì¼ \"%s\"ì„(를) ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤. 여기ì—서 ë‹¤ìš´ë¡œë“œí• ìˆ˜ 있습니다: %s", +"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s ë‹˜ì´ í´ë” \"%s\"ì„(를) ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤. 여기ì—서 ë‹¤ìš´ë¡œë“œí• ìˆ˜ 있습니다: %s", "Category type not provided." => "분류 형ì‹ì´ ì œê³µë˜ì§€ 않았습니다.", "No category to add?" => "ì¶”ê°€í• ë¶„ë¥˜ê°€ 없습니까?", "This category already exists: " => "ì´ ë¶„ë¥˜ëŠ” ì´ë¯¸ 존재합니다:", @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "ì±…ê°ˆí”¼ì— %sì„(를) ì¶”ê°€í• ìˆ˜ 없었습니다.", "No categories selected for deletion." => "ì‚ì œí• ë¶„ë¥˜ë¥¼ ì„ íƒí•˜ì§€ 않았습니다.", "Error removing %s from favorites." => "책갈피ì—서 %sì„(를) ì‚ì œí• ìˆ˜ 없었습니다.", +"Sunday" => "ì¼ìš”ì¼", +"Monday" => "월요ì¼", +"Tuesday" => "화요ì¼", +"Wednesday" => "수요ì¼", +"Thursday" => "목요ì¼", +"Friday" => "금요ì¼", +"Saturday" => "í† ìš”ì¼", +"January" => "1ì›”", +"February" => "2ì›”", +"March" => "3ì›”", +"April" => "4ì›”", +"May" => "5ì›”", +"June" => "6ì›”", +"July" => "7ì›”", +"August" => "8ì›”", +"September" => "9ì›”", +"October" => "10ì›”", +"November" => "11ì›”", +"December" => "12ì›”", "Settings" => "ì„¤ì •", "seconds ago" => "ì´ˆ ì „", "1 minute ago" => "1ë¶„ ì „", @@ -34,6 +53,8 @@ "Error" => "오류", "The app name is not specified." => "앱 ì´ë¦„ì´ ì§€ì •ë˜ì§€ 않았습니다.", "The required file {file} is not installed!" => "필요한 íŒŒì¼ {file}ì´(ê°€) 설치ë˜ì§€ 않았습니다!", +"Share" => "ê³µìœ ", +"Shared" => "ê³µìœ ë¨", "Error while sharing" => "ê³µìœ í•˜ëŠ” 중 오류 ë°œìƒ", "Error while unsharing" => "ê³µìœ í•´ì œí•˜ëŠ” 중 오류 ë°œìƒ", "Error while changing permissions" => "권한 변경하는 중 오류 ë°œìƒ", @@ -63,6 +84,8 @@ "Error setting expiration date" => "만료 ë‚ ì§œ ì„¤ì • 오류", "Sending ..." => "ì „ì†¡ 중...", "Email sent" => "ì´ë©”ì¼ ë°œì†¡ë¨", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "ì—…ë°ì´íŠ¸ê°€ 실패하였습니다. ì´ ë¬¸ì œë¥¼ <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud 커뮤니티</a>ì— ë³´ê³ í•´ 주ì‹ì‹œì˜¤.", +"The update was successful. Redirecting you to ownCloud now." => "ì—…ë°ì´íŠ¸ê°€ 성공하였습니다. ownCloud로 ëŒì•„갑니다.", "ownCloud password reset" => "ownCloud 암호 ìž¬ì„¤ì •", "Use the following link to reset your password: {link}" => "ë‹¤ìŒ ë§í¬ë¥¼ 사용하여 암호를 ìž¬ì„¤ì •í• ìˆ˜ 있습니다: {link}", "You will receive a link to reset your password via Email." => "ì´ë©”ì¼ë¡œ 암호 ìž¬ì„¤ì • ë§í¬ë¥¼ 보냈습니다.", @@ -98,25 +121,6 @@ "Database tablespace" => "ë°ì´í„°ë² ì´ìФ í…Œì´ë¸” 공간", "Database host" => "ë°ì´í„°ë² ì´ìФ 호스트", "Finish setup" => "설치 완료", -"Sunday" => "ì¼ìš”ì¼", -"Monday" => "월요ì¼", -"Tuesday" => "화요ì¼", -"Wednesday" => "수요ì¼", -"Thursday" => "목요ì¼", -"Friday" => "금요ì¼", -"Saturday" => "í† ìš”ì¼", -"January" => "1ì›”", -"February" => "2ì›”", -"March" => "3ì›”", -"April" => "4ì›”", -"May" => "5ì›”", -"June" => "6ì›”", -"July" => "7ì›”", -"August" => "8ì›”", -"September" => "9ì›”", -"October" => "10ì›”", -"November" => "11ì›”", -"December" => "12ì›”", "web services under your control" => "ë‚´ê°€ 관리하는 웹 서비스", "Log out" => "로그아웃", "Automatic logon rejected!" => "ìžë™ 로그ì¸ì´ ê±°ë¶€ë˜ì—ˆìŠµë‹ˆë‹¤!", @@ -127,5 +131,5 @@ "Log in" => "로그ì¸", "prev" => "ì´ì „", "next" => "다ìŒ", -"Updating ownCloud to version %s, this may take a while." => "ownCloud 를 ë²„ì ¼ %s로 ì—…ë°ì´íЏ 하는 중, ì‹œê°„ì´ ì†Œìš”ë©ë‹ˆë‹¤." +"Updating ownCloud to version %s, this may take a while." => "ownCloud를 ë²„ì „ %s(으)로 ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤. ìž ì‹œ ê¸°ë‹¤ë ¤ 주ì‹ì‹œì˜¤." ); diff --git a/core/l10n/lb.php b/core/l10n/lb.php index 407b8093a27..4069a778365 100644 --- a/core/l10n/lb.php +++ b/core/l10n/lb.php @@ -2,14 +2,45 @@ "No category to add?" => "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", +"Tuesday" => "Dënschdes", +"Wednesday" => "Mëttwoch", +"Thursday" => "Donneschdes", +"Friday" => "Freides", +"Saturday" => "Samschdes", +"January" => "Januar", +"February" => "Februar", +"March" => "Mäerz", +"April" => "Abrëll", +"May" => "Mee", +"June" => "Juni", +"July" => "Juli", +"August" => "August", +"September" => "September", +"October" => "Oktober", +"November" => "November", +"December" => "Dezember", "Settings" => "Astellungen", +"1 hour ago" => "vrun 1 Stonn", +"{hours} hours ago" => "vru {hours} Stonnen", +"last month" => "Läschte Mount", +"{months} months ago" => "vru {months} Méint", +"months ago" => "Méint hier", +"last year" => "Läscht Joer", +"years ago" => "Joren hier", +"Choose" => "Auswielen", "Cancel" => "Ofbriechen", "No" => "Nee", "Yes" => "Jo", "Ok" => "OK", "Error" => "Fehler", +"Share" => "Deelen", "Password" => "Passwuert", +"Unshare" => "Net méi deelen", "create" => "erstellen", +"delete" => "läschen", +"share" => "deelen", "ownCloud password reset" => "ownCloud Passwuert reset", "Use the following link to reset your password: {link}" => "Benotz folgende Link fir däi Passwuert ze reseten: {link}", "You will receive a link to reset your password via Email." => "Du kriss en Link fir däin Passwuert nei ze setzen via Email geschéckt.", @@ -30,7 +61,7 @@ "Add" => "Bäisetzen", "Security Warning" => "Sécherheets Warnung", "Create an <strong>admin account</strong>" => "En <strong>Admin Account</strong> uleeën", -"Advanced" => "Advanced", +"Advanced" => "Avancéiert", "Data folder" => "Daten Dossier", "Configure the database" => "Datebank konfiguréieren", "will be used" => "wärt benotzt ginn", @@ -40,25 +71,6 @@ "Database tablespace" => "Datebank Tabelle-Gréisst", "Database host" => "Datebank Server", "Finish setup" => "Installatioun ofschléissen", -"Sunday" => "Sonndes", -"Monday" => "Méindes", -"Tuesday" => "Dënschdes", -"Wednesday" => "Mëttwoch", -"Thursday" => "Donneschdes", -"Friday" => "Freides", -"Saturday" => "Samschdes", -"January" => "Januar", -"February" => "Februar", -"March" => "Mäerz", -"April" => "Abrëll", -"May" => "Mee", -"June" => "Juni", -"July" => "Juli", -"August" => "August", -"September" => "September", -"October" => "Oktober", -"November" => "November", -"December" => "Dezember", "web services under your control" => "Web Servicer ënnert denger Kontroll", "Log out" => "Ausloggen", "Lost your password?" => "Passwuert vergiess?", diff --git a/core/l10n/lt_LT.php b/core/l10n/lt_LT.php index ec15c646191..c2dc47c826c 100644 --- a/core/l10n/lt_LT.php +++ b/core/l10n/lt_LT.php @@ -2,6 +2,25 @@ "No category to add?" => "NepridÄ—site jokios kategorijos?", "This category already exists: " => "Tokia kategorija jau yra:", "No categories selected for deletion." => "Trynimui nepasirinkta jokia kategorija.", +"Sunday" => "Sekmadienis", +"Monday" => "Pirmadienis", +"Tuesday" => "Antradienis", +"Wednesday" => "TreÄiadienis", +"Thursday" => "Ketvirtadienis", +"Friday" => "Penktadienis", +"Saturday" => "Å eÅ¡tadienis", +"January" => "Sausis", +"February" => "Vasaris", +"March" => "Kovas", +"April" => "Balandis", +"May" => "Gegužė", +"June" => "Birželis", +"July" => "Liepa", +"August" => "RugpjÅ«tis", +"September" => "RugsÄ—jis", +"October" => "Spalis", +"November" => "Lapkritis", +"December" => "Gruodis", "Settings" => "Nustatymai", "seconds ago" => "prieÅ¡ sekundÄ™", "1 minute ago" => "PrieÅ¡ 1 minutÄ™", @@ -19,6 +38,7 @@ "Yes" => "Taip", "Ok" => "Gerai", "Error" => "Klaida", +"Share" => "Dalintis", "Error while sharing" => "Klaida, dalijimosi metu", "Error while unsharing" => "Klaida, kai atÅ¡aukiamas dalijimasis", "Error while changing permissions" => "Klaida, keiÄiant privilegijas", @@ -77,25 +97,6 @@ "Database tablespace" => "Duomenų bazÄ—s loginis saugojimas", "Database host" => "Duomenų bazÄ—s serveris", "Finish setup" => "Baigti diegimÄ…", -"Sunday" => "Sekmadienis", -"Monday" => "Pirmadienis", -"Tuesday" => "Antradienis", -"Wednesday" => "TreÄiadienis", -"Thursday" => "Ketvirtadienis", -"Friday" => "Penktadienis", -"Saturday" => "Å eÅ¡tadienis", -"January" => "Sausis", -"February" => "Vasaris", -"March" => "Kovas", -"April" => "Balandis", -"May" => "Gegužė", -"June" => "Birželis", -"July" => "Liepa", -"August" => "RugpjÅ«tis", -"September" => "RugsÄ—jis", -"October" => "Spalis", -"November" => "Lapkritis", -"December" => "Gruodis", "web services under your control" => "jÅ«sų valdomos web paslaugos", "Log out" => "Atsijungti", "Automatic logon rejected!" => "Automatinis prisijungimas atmestas!", diff --git a/core/l10n/lv.php b/core/l10n/lv.php index 8a6dc033de6..dd63ab6c90f 100644 --- a/core/l10n/lv.php +++ b/core/l10n/lv.php @@ -1,6 +1,27 @@ <?php $TRANSLATIONS = array( +"Sunday" => "SvÄ“tdiena", +"Monday" => "Pirmdiena", +"Tuesday" => "Otrdiena", +"Wednesday" => "TreÅ¡diena", +"Thursday" => "Ceturtdiena", +"Friday" => "Piektdiena", +"Saturday" => "Sestdiena", +"January" => "JanvÄris", +"February" => "FebruÄris", +"March" => "Marts", +"April" => "AprÄ«lis", +"May" => "Maijs", +"June" => "JÅ«nijs", +"July" => "JÅ«lijs", +"August" => "Augusts", +"September" => "Septembris", +"October" => "Oktobris", +"November" => "Novembris", +"December" => "Decembris", "Settings" => "IestatÄ«jumi", +"Cancel" => "Atcelt", "Error" => "Kļūme", +"Share" => "LÄ«dzdalÄ«t", "Password" => "Parole", "Unshare" => "PÄrtraukt lÄ«dzdalīšanu", "Use the following link to reset your password: {link}" => "Izmantojiet Å¡o linku lai mainÄ«tu paroli", diff --git a/core/l10n/mk.php b/core/l10n/mk.php index d8fa16d44f3..0b202fa6667 100644 --- a/core/l10n/mk.php +++ b/core/l10n/mk.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Грешка при додавање %s во омилени.", "No categories selected for deletion." => "Ðе е одбрана категорија за бришење.", "Error removing %s from favorites." => "Грешка при бришење на %s од омилени.", +"Sunday" => "Ðедела", +"Monday" => "Понеделник", +"Tuesday" => "Вторник", +"Wednesday" => "Среда", +"Thursday" => "Четврток", +"Friday" => "Петок", +"Saturday" => "Сабота", +"January" => "Јануари", +"February" => "Февруари", +"March" => "Март", +"April" => "Ðприл", +"May" => "Мај", +"June" => "Јуни", +"July" => "Јули", +"August" => "ÐвгуÑÑ‚", +"September" => "Септември", +"October" => "Октомври", +"November" => "Ðоември", +"December" => "Декември", "Settings" => "ПоÑтавки", "seconds ago" => "пред Ñекунди", "1 minute ago" => "пред 1 минута", @@ -34,6 +53,7 @@ "Error" => "Грешка", "The app name is not specified." => "Името на апликацијата не е Ñпецифицирано.", "The required file {file} is not installed!" => "Задолжителната датотека {file} не е инÑталирана!", +"Share" => "Сподели", "Error while sharing" => "Грешка при Ñподелување", "Error while unsharing" => "Грешка при прекин на Ñподелување", "Error while changing permissions" => "Грешка при промена на привилегии", @@ -98,25 +118,6 @@ "Database tablespace" => "Табела во базата на податоци", "Database host" => "Сервер Ñо база", "Finish setup" => "Заврши го подеÑувањето", -"Sunday" => "Ðедела", -"Monday" => "Понеделник", -"Tuesday" => "Вторник", -"Wednesday" => "Среда", -"Thursday" => "Четврток", -"Friday" => "Петок", -"Saturday" => "Сабота", -"January" => "Јануари", -"February" => "Февруари", -"March" => "Март", -"April" => "Ðприл", -"May" => "Мај", -"June" => "Јуни", -"July" => "Јули", -"August" => "ÐвгуÑÑ‚", -"September" => "Септември", -"October" => "Октомври", -"November" => "Ðоември", -"December" => "Декември", "web services under your control" => "веб ÑервиÑи под Ваша контрола", "Log out" => "Одјава", "Automatic logon rejected!" => "Одбиена автоматÑка најава!", diff --git a/core/l10n/ms_MY.php b/core/l10n/ms_MY.php index b08ccecf616..477e82ea9f1 100644 --- a/core/l10n/ms_MY.php +++ b/core/l10n/ms_MY.php @@ -2,12 +2,32 @@ "No category to add?" => "Tiada kategori untuk di tambah?", "This category already exists: " => "Kategori ini telah wujud", "No categories selected for deletion." => "tiada kategori dipilih untuk penghapusan", +"Sunday" => "Ahad", +"Monday" => "Isnin", +"Tuesday" => "Selasa", +"Wednesday" => "Rabu", +"Thursday" => "Khamis", +"Friday" => "Jumaat", +"Saturday" => "Sabtu", +"January" => "Januari", +"February" => "Februari", +"March" => "Mac", +"April" => "April", +"May" => "Mei", +"June" => "Jun", +"July" => "Julai", +"August" => "Ogos", +"September" => "September", +"October" => "Oktober", +"November" => "November", +"December" => "Disember", "Settings" => "Tetapan", "Cancel" => "Batal", "No" => "Tidak", "Yes" => "Ya", "Ok" => "Ok", "Error" => "Ralat", +"Share" => "Kongsi", "Password" => "Kata laluan", "ownCloud password reset" => "Set semula kata lalaun ownCloud", "Use the following link to reset your password: {link}" => "Guna pautan berikut untuk menetapkan semula kata laluan anda: {link}", @@ -38,25 +58,6 @@ "Database name" => "Nama pangkalan data", "Database host" => "Hos pangkalan data", "Finish setup" => "Setup selesai", -"Sunday" => "Ahad", -"Monday" => "Isnin", -"Tuesday" => "Selasa", -"Wednesday" => "Rabu", -"Thursday" => "Khamis", -"Friday" => "Jumaat", -"Saturday" => "Sabtu", -"January" => "Januari", -"February" => "Februari", -"March" => "Mac", -"April" => "April", -"May" => "Mei", -"June" => "Jun", -"July" => "Julai", -"August" => "Ogos", -"September" => "September", -"October" => "Oktober", -"November" => "November", -"December" => "Disember", "web services under your control" => "Perkhidmatan web di bawah kawalan anda", "Log out" => "Log keluar", "Lost your password?" => "Hilang kata laluan?", diff --git a/core/l10n/nb_NO.php b/core/l10n/nb_NO.php index d985e454b7c..65d6ea00cce 100644 --- a/core/l10n/nb_NO.php +++ b/core/l10n/nb_NO.php @@ -2,6 +2,25 @@ "No category to add?" => "Ingen kategorier Ã¥ legge til?", "This category already exists: " => "Denne kategorien finnes allerede:", "No categories selected for deletion." => "Ingen kategorier merket for sletting.", +"Sunday" => "Søndag", +"Monday" => "Mandag", +"Tuesday" => "Tirsdag", +"Wednesday" => "Onsdag", +"Thursday" => "Torsdag", +"Friday" => "Fredag", +"Saturday" => "Lørdag", +"January" => "Januar", +"February" => "Februar", +"March" => "Mars", +"April" => "April", +"May" => "Mai", +"June" => "Juni", +"July" => "Juli", +"August" => "August", +"September" => "September", +"October" => "Oktober", +"November" => "November", +"December" => "Desember", "Settings" => "Innstillinger", "seconds ago" => "sekunder siden", "1 minute ago" => "1 minutt siden", @@ -22,6 +41,7 @@ "Yes" => "Ja", "Ok" => "Ok", "Error" => "Feil", +"Share" => "Del", "Error while sharing" => "Feil under deling", "Share with" => "Del med", "Share with link" => "Del med link", @@ -73,25 +93,6 @@ "Database tablespace" => "Database tabellomrÃ¥de", "Database host" => "Databasevert", "Finish setup" => "Fullfør oppsetting", -"Sunday" => "Søndag", -"Monday" => "Mandag", -"Tuesday" => "Tirsdag", -"Wednesday" => "Onsdag", -"Thursday" => "Torsdag", -"Friday" => "Fredag", -"Saturday" => "Lørdag", -"January" => "Januar", -"February" => "Februar", -"March" => "Mars", -"April" => "April", -"May" => "Mai", -"June" => "Juni", -"July" => "Juli", -"August" => "August", -"September" => "September", -"October" => "Oktober", -"November" => "November", -"December" => "Desember", "web services under your control" => "nettjenester under din kontroll", "Log out" => "Logg ut", "Automatic logon rejected!" => "Automatisk pÃ¥logging avvist!", diff --git a/core/l10n/nl.php b/core/l10n/nl.php index 739d8181d6f..91ab7827fd6 100644 --- a/core/l10n/nl.php +++ b/core/l10n/nl.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Toevoegen van %s aan favorieten is mislukt.", "No categories selected for deletion." => "Geen categorie geselecteerd voor verwijdering.", "Error removing %s from favorites." => "Verwijderen %s van favorieten is mislukt.", +"Sunday" => "Zondag", +"Monday" => "Maandag", +"Tuesday" => "Dinsdag", +"Wednesday" => "Woensdag", +"Thursday" => "Donderdag", +"Friday" => "Vrijdag", +"Saturday" => "Zaterdag", +"January" => "januari", +"February" => "februari", +"March" => "maart", +"April" => "april", +"May" => "mei", +"June" => "juni", +"July" => "juli", +"August" => "augustus", +"September" => "september", +"October" => "oktober", +"November" => "november", +"December" => "december", "Settings" => "Instellingen", "seconds ago" => "seconden geleden", "1 minute ago" => "1 minuut geleden", @@ -34,6 +53,7 @@ "Error" => "Fout", "The app name is not specified." => "De app naam is niet gespecificeerd.", "The required file {file} is not installed!" => "Het vereiste bestand {file} is niet geïnstalleerd!", +"Share" => "Delen", "Error while sharing" => "Fout tijdens het delen", "Error while unsharing" => "Fout tijdens het stoppen met delen", "Error while changing permissions" => "Fout tijdens het veranderen van permissies", @@ -98,25 +118,6 @@ "Database tablespace" => "Database tablespace", "Database host" => "Database server", "Finish setup" => "Installatie afronden", -"Sunday" => "Zondag", -"Monday" => "Maandag", -"Tuesday" => "Dinsdag", -"Wednesday" => "Woensdag", -"Thursday" => "Donderdag", -"Friday" => "Vrijdag", -"Saturday" => "Zaterdag", -"January" => "januari", -"February" => "februari", -"March" => "maart", -"April" => "april", -"May" => "mei", -"June" => "juni", -"July" => "juli", -"August" => "augustus", -"September" => "september", -"October" => "oktober", -"November" => "november", -"December" => "december", "web services under your control" => "Webdiensten in eigen beheer", "Log out" => "Afmelden", "Automatic logon rejected!" => "Automatische aanmelding geweigerd!", diff --git a/core/l10n/nn_NO.php b/core/l10n/nn_NO.php index 8aaf0b705c8..61b2baffbf2 100644 --- a/core/l10n/nn_NO.php +++ b/core/l10n/nn_NO.php @@ -1,4 +1,23 @@ <?php $TRANSLATIONS = array( +"Sunday" => "Søndag", +"Monday" => "MÃ¥ndag", +"Tuesday" => "Tysdag", +"Wednesday" => "Onsdag", +"Thursday" => "Torsdag", +"Friday" => "Fredag", +"Saturday" => "Laurdag", +"January" => "Januar", +"February" => "Februar", +"March" => "Mars", +"April" => "April", +"May" => "Mai", +"June" => "Juni", +"July" => "Juli", +"August" => "August", +"September" => "September", +"October" => "Oktober", +"November" => "November", +"December" => "Desember", "Settings" => "Innstillingar", "Cancel" => "Kanseller", "Error" => "Feil", @@ -28,25 +47,6 @@ "Database name" => "Databasenamn", "Database host" => "Databasetenar", "Finish setup" => "Fullfør oppsettet", -"Sunday" => "Søndag", -"Monday" => "MÃ¥ndag", -"Tuesday" => "Tysdag", -"Wednesday" => "Onsdag", -"Thursday" => "Torsdag", -"Friday" => "Fredag", -"Saturday" => "Laurdag", -"January" => "Januar", -"February" => "Februar", -"March" => "Mars", -"April" => "April", -"May" => "Mai", -"June" => "Juni", -"July" => "Juli", -"August" => "August", -"September" => "September", -"October" => "Oktober", -"November" => "November", -"December" => "Desember", "web services under your control" => "Vev tjenester under din kontroll", "Log out" => "Logg ut", "Lost your password?" => "Gløymt passordet?", diff --git a/core/l10n/oc.php b/core/l10n/oc.php index be6d5aec285..5b399dd8264 100644 --- a/core/l10n/oc.php +++ b/core/l10n/oc.php @@ -2,6 +2,25 @@ "No category to add?" => "Pas de categoria d'ajustar ?", "This category already exists: " => "La categoria exista ja :", "No categories selected for deletion." => "Pas de categorias seleccionadas per escafar.", +"Sunday" => "Dimenge", +"Monday" => "Diluns", +"Tuesday" => "Dimarç", +"Wednesday" => "Dimecres", +"Thursday" => "Dijòus", +"Friday" => "Divendres", +"Saturday" => "Dissabte", +"January" => "Genièr", +"February" => "Febrièr", +"March" => "Març", +"April" => "Abril", +"May" => "Mai", +"June" => "Junh", +"July" => "Julhet", +"August" => "Agost", +"September" => "Septembre", +"October" => "Octobre", +"November" => "Novembre", +"December" => "Decembre", "Settings" => "Configuracion", "seconds ago" => "segonda a", "1 minute ago" => "1 minuta a", @@ -17,6 +36,7 @@ "Yes" => "Ã’c", "Ok" => "D'accòrdi", "Error" => "Error", +"Share" => "Parteja", "Error while sharing" => "Error al partejar", "Error while unsharing" => "Error al non partejar", "Error while changing permissions" => "Error al cambiar permissions", @@ -69,25 +89,6 @@ "Database tablespace" => "Espandi de taula de basa de donadas", "Database host" => "Ã’ste de basa de donadas", "Finish setup" => "Configuracion acabada", -"Sunday" => "Dimenge", -"Monday" => "Diluns", -"Tuesday" => "Dimarç", -"Wednesday" => "Dimecres", -"Thursday" => "Dijòus", -"Friday" => "Divendres", -"Saturday" => "Dissabte", -"January" => "Genièr", -"February" => "Febrièr", -"March" => "Març", -"April" => "Abril", -"May" => "Mai", -"June" => "Junh", -"July" => "Julhet", -"August" => "Agost", -"September" => "Septembre", -"October" => "Octobre", -"November" => "Novembre", -"December" => "Decembre", "web services under your control" => "Services web jos ton contraròtle", "Log out" => "Sortida", "Lost your password?" => "L'as perdut lo senhal ?", diff --git a/core/l10n/pl.php b/core/l10n/pl.php index 3324040209b..1376fa1359d 100644 --- a/core/l10n/pl.php +++ b/core/l10n/pl.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Błąd dodania %s do ulubionych.", "No categories selected for deletion." => "Nie ma kategorii zaznaczonych do usuniÄ™cia.", "Error removing %s from favorites." => "Błąd usuniÄ™cia %s z ulubionych.", +"Sunday" => "Niedziela", +"Monday" => "PoniedziaÅ‚ek", +"Tuesday" => "Wtorek", +"Wednesday" => "Åšroda", +"Thursday" => "Czwartek", +"Friday" => "PiÄ…tek", +"Saturday" => "Sobota", +"January" => "StyczeÅ„", +"February" => "Luty", +"March" => "Marzec", +"April" => "KwiecieÅ„", +"May" => "Maj", +"June" => "Czerwiec", +"July" => "Lipiec", +"August" => "SierpieÅ„", +"September" => "WrzesieÅ„", +"October" => "Październik", +"November" => "Listopad", +"December" => "GrudzieÅ„", "Settings" => "Ustawienia", "seconds ago" => "sekund temu", "1 minute ago" => "1 minute temu", @@ -34,6 +53,8 @@ "Error" => "Błąd", "The app name is not specified." => "Nazwa aplikacji nie jest okreÅ›lona.", "The required file {file} is not installed!" => "Żądany plik {file} nie jest zainstalowany!", +"Share" => "UdostÄ™pnij", +"Shared" => "UdostÄ™pniono", "Error while sharing" => "Błąd podczas współdzielenia", "Error while unsharing" => "Błąd podczas zatrzymywania współdzielenia", "Error while changing permissions" => "Błąd przy zmianie uprawnieÅ„", @@ -98,25 +119,6 @@ "Database tablespace" => "Obszar tabel bazy danych", "Database host" => "Komputer bazy danych", "Finish setup" => "ZakoÅ„cz konfigurowanie", -"Sunday" => "Niedziela", -"Monday" => "PoniedziaÅ‚ek", -"Tuesday" => "Wtorek", -"Wednesday" => "Åšroda", -"Thursday" => "Czwartek", -"Friday" => "PiÄ…tek", -"Saturday" => "Sobota", -"January" => "StyczeÅ„", -"February" => "Luty", -"March" => "Marzec", -"April" => "KwiecieÅ„", -"May" => "Maj", -"June" => "Czerwiec", -"July" => "Lipiec", -"August" => "SierpieÅ„", -"September" => "WrzesieÅ„", -"October" => "Październik", -"November" => "Listopad", -"December" => "GrudzieÅ„", "web services under your control" => "usÅ‚ugi internetowe pod kontrolÄ…", "Log out" => "Wylogowuje użytkownika", "Automatic logon rejected!" => "Automatyczne logowanie odrzucone!", diff --git a/core/l10n/pt_BR.php b/core/l10n/pt_BR.php index 3b119650268..929f298c4c3 100644 --- a/core/l10n/pt_BR.php +++ b/core/l10n/pt_BR.php @@ -1,4 +1,8 @@ <?php $TRANSLATIONS = array( +"User %s shared a file with you" => "O usuário %s compartilhou um arquivo com você", +"User %s shared a folder with you" => "O usuário %s compartilhou uma pasta com você", +"User %s shared the file \"%s\" with you. It is available for download here: %s" => "O usuário %s compartilhou com você o arquivo \"%s\", que está disponÃvel para download em: %s", +"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "O usuário %s compartilhou com você a pasta \"%s\", que está disponÃvel para download em: %s", "Category type not provided." => "Tipo de categoria não fornecido.", "No category to add?" => "Nenhuma categoria adicionada?", "This category already exists: " => "Essa categoria já existe", @@ -7,6 +11,25 @@ "Error adding %s to favorites." => "Erro ao adicionar %s aos favoritos.", "No categories selected for deletion." => "Nenhuma categoria selecionada para deletar.", "Error removing %s from favorites." => "Erro ao remover %s dos favoritos.", +"Sunday" => "Domingo", +"Monday" => "Segunda-feira", +"Tuesday" => "Terça-feira", +"Wednesday" => "Quarta-feira", +"Thursday" => "Quinta-feira", +"Friday" => "Sexta-feira", +"Saturday" => "Sábado", +"January" => "Janeiro", +"February" => "Fevereiro", +"March" => "Março", +"April" => "Abril", +"May" => "Maio", +"June" => "Junho", +"July" => "Julho", +"August" => "Agosto", +"September" => "Setembro", +"October" => "Outubro", +"November" => "Novembro", +"December" => "Dezembro", "Settings" => "Configurações", "seconds ago" => "segundos atrás", "1 minute ago" => "1 minuto atrás", @@ -30,6 +53,8 @@ "Error" => "Erro", "The app name is not specified." => "O nome do app não foi especificado.", "The required file {file} is not installed!" => "O arquivo {file} necessário não está instalado!", +"Share" => "Compartilhar", +"Shared" => "Compartilhados", "Error while sharing" => "Erro ao compartilhar", "Error while unsharing" => "Erro ao descompartilhar", "Error while changing permissions" => "Erro ao mudar permissões", @@ -39,6 +64,8 @@ "Share with link" => "Compartilhar com link", "Password protect" => "Proteger com senha", "Password" => "Senha", +"Email link to person" => "Enviar link por e-mail", +"Send" => "Enviar", "Set expiration date" => "Definir data de expiração", "Expiration date" => "Data de expiração", "Share via email:" => "Compartilhar via e-mail:", @@ -55,6 +82,10 @@ "Password protected" => "Protegido com senha", "Error unsetting expiration date" => "Erro ao remover data de expiração", "Error setting expiration date" => "Erro ao definir data de expiração", +"Sending ..." => "Enviando ...", +"Email sent" => "E-mail enviado", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "A atualização falhou. Por favor, relate este problema para a <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">comunidade ownCloud</a>.", +"The update was successful. Redirecting you to ownCloud now." => "A atualização teve êxito. Você será redirecionado ao ownCloud agora.", "ownCloud password reset" => "Redefinir senha ownCloud", "Use the following link to reset your password: {link}" => "Use o seguinte link para redefinir sua senha: {link}", "You will receive a link to reset your password via Email." => "Você receberá um link para redefinir sua senha via e-mail.", @@ -90,25 +121,6 @@ "Database tablespace" => "Espaço de tabela do banco de dados", "Database host" => "Banco de dados do host", "Finish setup" => "Concluir configuração", -"Sunday" => "Domingo", -"Monday" => "Segunda-feira", -"Tuesday" => "Terça-feira", -"Wednesday" => "Quarta-feira", -"Thursday" => "Quinta-feira", -"Friday" => "Sexta-feira", -"Saturday" => "Sábado", -"January" => "Janeiro", -"February" => "Fevereiro", -"March" => "Março", -"April" => "Abril", -"May" => "Maio", -"June" => "Junho", -"July" => "Julho", -"August" => "Agosto", -"September" => "Setembro", -"October" => "Outubro", -"November" => "Novembro", -"December" => "Dezembro", "web services under your control" => "web services sob seu controle", "Log out" => "Sair", "Automatic logon rejected!" => "Entrada Automática no Sistema Rejeitada!", @@ -118,5 +130,6 @@ "remember" => "lembrete", "Log in" => "Log in", "prev" => "anterior", -"next" => "próximo" +"next" => "próximo", +"Updating ownCloud to version %s, this may take a while." => "Atualizando ownCloud para a versão %s, isto pode levar algum tempo." ); diff --git a/core/l10n/pt_PT.php b/core/l10n/pt_PT.php index 6e3a558986c..2189a7e811c 100644 --- a/core/l10n/pt_PT.php +++ b/core/l10n/pt_PT.php @@ -9,11 +9,30 @@ "Object type not provided." => "Tipo de objecto não fornecido", "%s ID not provided." => "ID %s não fornecido", "Error adding %s to favorites." => "Erro a adicionar %s aos favoritos", -"No categories selected for deletion." => "Nenhuma categoria seleccionar para eliminar", +"No categories selected for deletion." => "Nenhuma categoria seleccionada para apagar", "Error removing %s from favorites." => "Erro a remover %s dos favoritos.", +"Sunday" => "Domingo", +"Monday" => "Segunda", +"Tuesday" => "Terça", +"Wednesday" => "Quarta", +"Thursday" => "Quinta", +"Friday" => "Sexta", +"Saturday" => "Sábado", +"January" => "Janeiro", +"February" => "Fevereiro", +"March" => "Março", +"April" => "Abril", +"May" => "Maio", +"June" => "Junho", +"July" => "Julho", +"August" => "Agosto", +"September" => "Setembro", +"October" => "Outubro", +"November" => "Novembro", +"December" => "Dezembro", "Settings" => "Definições", "seconds ago" => "Minutos atrás", -"1 minute ago" => "Falta 1 minuto", +"1 minute ago" => "Há 1 minuto", "{minutes} minutes ago" => "{minutes} minutos atrás", "1 hour ago" => "Há 1 hora", "{hours} hours ago" => "Há {hours} horas atrás", @@ -34,6 +53,8 @@ "Error" => "Erro", "The app name is not specified." => "O nome da aplicação não foi especificado", "The required file {file} is not installed!" => "O ficheiro necessário {file} não está instalado!", +"Share" => "Partilhar", +"Shared" => "Partilhado", "Error while sharing" => "Erro ao partilhar", "Error while unsharing" => "Erro ao deixar de partilhar", "Error while changing permissions" => "Erro ao mudar permissões", @@ -62,7 +83,9 @@ "Error unsetting expiration date" => "Erro ao retirar a data de expiração", "Error setting expiration date" => "Erro ao aplicar a data de expiração", "Sending ..." => "A Enviar...", -"Email sent" => "E-mail enviado com sucesso!", +"Email sent" => "E-mail enviado", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "A actualização falhou. Por favor reporte este incidente seguindo este link <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>.", +"The update was successful. Redirecting you to ownCloud now." => "A actualização foi concluÃda com sucesso. Vai ser redireccionado para o ownCloud agora.", "ownCloud password reset" => "Reposição da password ownCloud", "Use the following link to reset your password: {link}" => "Use o seguinte endereço para repor a sua password: {link}", "You will receive a link to reset your password via Email." => "Vai receber um endereço para repor a sua password", @@ -71,7 +94,7 @@ "Username" => "Utilizador", "Request reset" => "Pedir reposição", "Your password was reset" => "A sua password foi reposta", -"To login page" => "Para a página de conexão", +"To login page" => "Para a página de entrada", "New password" => "Nova password", "Reset password" => "Repor password", "Personal" => "Pessoal", @@ -96,36 +119,17 @@ "Database password" => "Password da base de dados", "Database name" => "Nome da base de dados", "Database tablespace" => "Tablespace da base de dados", -"Database host" => "Host da base de dados", +"Database host" => "Anfitrião da base de dados", "Finish setup" => "Acabar instalação", -"Sunday" => "Domingo", -"Monday" => "Segunda", -"Tuesday" => "Terça", -"Wednesday" => "Quarta", -"Thursday" => "Quinta", -"Friday" => "Sexta", -"Saturday" => "Sábado", -"January" => "Janeiro", -"February" => "Fevereiro", -"March" => "Março", -"April" => "Abril", -"May" => "Maio", -"June" => "Junho", -"July" => "Julho", -"August" => "Agosto", -"September" => "Setembro", -"October" => "Outubro", -"November" => "Novembro", -"December" => "Dezembro", "web services under your control" => "serviços web sob o seu controlo", "Log out" => "Sair", "Automatic logon rejected!" => "Login automático rejeitado!", "If you did not change your password recently, your account may be compromised!" => "Se não mudou a sua palavra-passe recentemente, a sua conta pode ter sido comprometida!", "Please change your password to secure your account again." => "Por favor mude a sua palavra-passe para assegurar a sua conta de novo.", -"Lost your password?" => "Esqueceu a sua password?", +"Lost your password?" => "Esqueceu-se da sua password?", "remember" => "lembrar", "Log in" => "Entrar", "prev" => "anterior", "next" => "seguinte", -"Updating ownCloud to version %s, this may take a while." => "A Actualizar o ownCloud para a versão %s, esta operação pode demorar." +"Updating ownCloud to version %s, this may take a while." => "A actualizar o ownCloud para a versão %s, esta operação pode demorar." ); diff --git a/core/l10n/ro.php b/core/l10n/ro.php index c3434706df8..83587fa4a76 100644 --- a/core/l10n/ro.php +++ b/core/l10n/ro.php @@ -1,18 +1,46 @@ <?php $TRANSLATIONS = array( +"User %s shared a file with you" => "Utilizatorul %s a partajat un fiÈ™ier cu tine", +"User %s shared a folder with you" => "Utilizatorul %s a partajat un dosar cu tine", +"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Utilizatorul %s a partajat fiÈ™ierul \"%s\" cu tine. ÃŽl poÈ›i descărca de aici: %s", +"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Utilizatorul %s a partajat dosarul \"%s\" cu tine. ÃŽl poÈ›i descărca de aici: %s ", "Category type not provided." => "Tipul de categorie nu este prevazut", "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", "No categories selected for deletion." => "Nici o categorie selectată pentru È™tergere.", +"Error removing %s from favorites." => "Eroare la È™tergerea %s din favorite", +"Sunday" => "Duminică", +"Monday" => "Luni", +"Tuesday" => "MarÈ›i", +"Wednesday" => "Miercuri", +"Thursday" => "Joi", +"Friday" => "Vineri", +"Saturday" => "Sâmbătă", +"January" => "Ianuarie", +"February" => "Februarie", +"March" => "Martie", +"April" => "Aprilie", +"May" => "Mai", +"June" => "Iunie", +"July" => "Iulie", +"August" => "August", +"September" => "Septembrie", +"October" => "Octombrie", +"November" => "Noiembrie", +"December" => "Decembrie", "Settings" => "Configurări", "seconds ago" => "secunde în urmă", "1 minute ago" => "1 minut în urmă", "{minutes} minutes ago" => "{minutes} minute in urma", "1 hour ago" => "Acum o ora", +"{hours} hours ago" => "{hours} ore în urmă", "today" => "astăzi", "yesterday" => "ieri", "{days} days ago" => "{days} zile in urma", "last month" => "ultima lună", +"{months} months ago" => "{months} luni în urmă", "months ago" => "luni în urmă", "last year" => "ultimul an", "years ago" => "ani în urmă", @@ -21,7 +49,11 @@ "No" => "Nu", "Yes" => "Da", "Ok" => "Ok", +"The object type is not specified." => "Tipul obiectului nu a fost specificat", "Error" => "Eroare", +"The app name is not specified." => "Numele aplicaÈ›iei nu a fost specificat", +"The required file {file} is not installed!" => "FiÈ™ierul obligatoriu {file} nu este instalat!", +"Share" => "Partajează", "Error while sharing" => "Eroare la partajare", "Error while unsharing" => "Eroare la anularea partajării", "Error while changing permissions" => "Eroare la modificarea permisiunilor", @@ -31,6 +63,8 @@ "Share with link" => "Partajare cu legătură", "Password protect" => "Protejare cu parolă", "Password" => "Parola", +"Email link to person" => "Expediază legătura prin poÈ™ta electronică", +"Send" => "Expediază", "Set expiration date" => "Specifică data expirării", "Expiration date" => "Data expirării", "Share via email:" => "Distribuie prin email:", @@ -47,6 +81,8 @@ "Password protected" => "Protejare cu parolă", "Error unsetting expiration date" => "Eroare la anularea datei de expirare", "Error setting expiration date" => "Eroare la specificarea datei de expirare", +"Sending ..." => "Se expediază...", +"Email sent" => "Mesajul a fost expediat", "ownCloud password reset" => "Resetarea parolei ownCloud ", "Use the following link to reset your password: {link}" => "FoloseÈ™te următorul link pentru a reseta parola: {link}", "You will receive a link to reset your password via Email." => "Vei primi un mesaj prin care vei putea reseta parola via email", @@ -82,25 +118,6 @@ "Database tablespace" => "Tabela de spaÈ›iu a bazei de date", "Database host" => "Bază date", "Finish setup" => "Finalizează instalarea", -"Sunday" => "Duminică", -"Monday" => "Luni", -"Tuesday" => "MarÈ›i", -"Wednesday" => "Miercuri", -"Thursday" => "Joi", -"Friday" => "Vineri", -"Saturday" => "Sâmbătă", -"January" => "Ianuarie", -"February" => "Februarie", -"March" => "Martie", -"April" => "Aprilie", -"May" => "Mai", -"June" => "Iunie", -"July" => "Iulie", -"August" => "August", -"September" => "Septembrie", -"October" => "Octombrie", -"November" => "Noiembrie", -"December" => "Decembrie", "web services under your control" => "servicii web controlate de tine", "Log out" => "IeÈ™ire", "Automatic logon rejected!" => "Logare automata respinsa", @@ -110,5 +127,6 @@ "remember" => "aminteÈ™te", "Log in" => "Autentificare", "prev" => "precedentul", -"next" => "următorul" +"next" => "următorul", +"Updating ownCloud to version %s, this may take a while." => "Actualizăm ownCloud la versiunea %s, aceasta poate dura câteva momente." ); diff --git a/core/l10n/ru.php b/core/l10n/ru.php index 7434d6af7f8..7b11ea43a4b 100644 --- a/core/l10n/ru.php +++ b/core/l10n/ru.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Ошибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ %s в избранное", "No categories selected for deletion." => "Ðет категорий Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ.", "Error removing %s from favorites." => "Ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ %s из избранного", +"Sunday" => "ВоÑкреÑенье", +"Monday" => "Понедельник", +"Tuesday" => "Вторник", +"Wednesday" => "Среда", +"Thursday" => "Четверг", +"Friday" => "ПÑтница", +"Saturday" => "Суббота", +"January" => "Январь", +"February" => "Февраль", +"March" => "Март", +"April" => "Ðпрель", +"May" => "Май", +"June" => "Июнь", +"July" => "Июль", +"August" => "ÐвгуÑÑ‚", +"September" => "СентÑбрь", +"October" => "ОктÑбрь", +"November" => "ÐоÑбрь", +"December" => "Декабрь", "Settings" => "ÐаÑтройки", "seconds ago" => "неÑколько Ñекунд назад", "1 minute ago" => "1 минуту назад", @@ -34,6 +53,7 @@ "Error" => "Ошибка", "The app name is not specified." => "Ð˜Ð¼Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ указано", "The required file {file} is not installed!" => "Ðеобходимый файл {file} не уÑтановлен!", +"Share" => "Открыть доÑтуп", "Error while sharing" => "Ошибка при открытии доÑтупа", "Error while unsharing" => "Ошибка при закрытии доÑтупа", "Error while changing permissions" => "Ошибка при Ñмене разрешений", @@ -98,25 +118,6 @@ "Database tablespace" => "Табличое проÑтранÑтво базы данных", "Database host" => "ХоÑÑ‚ базы данных", "Finish setup" => "Завершить уÑтановку", -"Sunday" => "ВоÑкреÑенье", -"Monday" => "Понедельник", -"Tuesday" => "Вторник", -"Wednesday" => "Среда", -"Thursday" => "Четверг", -"Friday" => "ПÑтница", -"Saturday" => "Суббота", -"January" => "Январь", -"February" => "Февраль", -"March" => "Март", -"April" => "Ðпрель", -"May" => "Май", -"June" => "Июнь", -"July" => "Июль", -"August" => "ÐвгуÑÑ‚", -"September" => "СентÑбрь", -"October" => "ОктÑбрь", -"November" => "ÐоÑбрь", -"December" => "Декабрь", "web services under your control" => "Сетевые Ñлужбы под твоим контролем", "Log out" => "Выйти", "Automatic logon rejected!" => "ÐвтоматичеÑкий вход в ÑиÑтему отключен!", diff --git a/core/l10n/ru_RU.php b/core/l10n/ru_RU.php index 84bd8f93156..53a3b9b0d59 100644 --- a/core/l10n/ru_RU.php +++ b/core/l10n/ru_RU.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Ошибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ %s в избранное.", "No categories selected for deletion." => "Ðет категорий, выбранных Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ.", "Error removing %s from favorites." => "Ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ %s из избранного.", +"Sunday" => "ВоÑкреÑенье", +"Monday" => "Понедельник", +"Tuesday" => "Вторник", +"Wednesday" => "Среда", +"Thursday" => "Четверг", +"Friday" => "ПÑтница", +"Saturday" => "Суббота", +"January" => "Январь", +"February" => "Февраль", +"March" => "Март", +"April" => "Ðпрель", +"May" => "Май", +"June" => "Июнь", +"July" => "Июль", +"August" => "ÐвгуÑÑ‚", +"September" => "СентÑбрь", +"October" => "ОктÑбрь", +"November" => "ÐоÑбрь", +"December" => "Декабрь", "Settings" => "ÐаÑтройки", "seconds ago" => "Ñекунд назад", "1 minute ago" => " 1 минуту назад", @@ -34,6 +53,8 @@ "Error" => "Ошибка", "The app name is not specified." => "Ð˜Ð¼Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ указано.", "The required file {file} is not installed!" => "Требуемый файл {файл} не уÑтановлен!", +"Share" => "Сделать общим", +"Shared" => "Опубликовано", "Error while sharing" => "Ошибка ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ доÑтупа", "Error while unsharing" => "Ошибка Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ доÑтупа", "Error while changing permissions" => "Ошибка при изменении прав доÑтупа", @@ -63,6 +84,8 @@ "Error setting expiration date" => "Ошибка при уÑтановке даты иÑÑ‚ÐµÑ‡ÐµÐ½Ð¸Ñ Ñрока дейÑтвиÑ", "Sending ..." => "Отправка ...", "Email sent" => "ПиÑьмо отправлено", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "Обновление прошло неудачно. ПожалуйÑта, Ñообщите об Ñтом результате в <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>.", +"The update was successful. Redirecting you to ownCloud now." => "Обновление прошло уÑпешно. Ðемедленное перенаправление Ð’Ð°Ñ Ð½Ð° ownCloud.", "ownCloud password reset" => "Переназначение паролÑ", "Use the following link to reset your password: {link}" => "ВоÑпользуйтеÑÑŒ Ñледующей ÑÑылкой Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ: {link}", "You will receive a link to reset your password via Email." => "Ð’Ñ‹ получите ÑÑылку Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¿Ð¾ Ñлектронной почте.", @@ -98,25 +121,6 @@ "Database tablespace" => "Ð¢Ð°Ð±Ð»Ð¸Ñ‡Ð½Ð°Ñ Ð¾Ð±Ð»Ð°Ñть базы данных", "Database host" => "Сервер базы данных", "Finish setup" => "Завершение наÑтройки", -"Sunday" => "ВоÑкреÑенье", -"Monday" => "Понедельник", -"Tuesday" => "Вторник", -"Wednesday" => "Среда", -"Thursday" => "Четверг", -"Friday" => "ПÑтница", -"Saturday" => "Суббота", -"January" => "Январь", -"February" => "Февраль", -"March" => "Март", -"April" => "Ðпрель", -"May" => "Май", -"June" => "Июнь", -"July" => "Июль", -"August" => "ÐвгуÑÑ‚", -"September" => "СентÑбрь", -"October" => "ОктÑбрь", -"November" => "ÐоÑбрь", -"December" => "Декабрь", "web services under your control" => "веб-ÑервиÑÑ‹ под Вашим контролем", "Log out" => "Выйти", "Automatic logon rejected!" => "ÐвтоматичеÑкий вход в ÑиÑтему отклонен!", @@ -126,5 +130,6 @@ "remember" => "запомнить", "Log in" => "Войти", "prev" => "предыдущий", -"next" => "Ñледующий" +"next" => "Ñледующий", +"Updating ownCloud to version %s, this may take a while." => "Обновление ownCloud до верÑии %s, Ñто может занÑть некоторое времÑ." ); diff --git a/core/l10n/si_LK.php b/core/l10n/si_LK.php index a6aeb484ed7..eab1ba10018 100644 --- a/core/l10n/si_LK.php +++ b/core/l10n/si_LK.php @@ -1,5 +1,24 @@ <?php $TRANSLATIONS = array( "No categories selected for deletion." => "මක෠දà·à¶¸à·“ම සඳහ෠ප්â€à¶»à·€à¶»à·Šà¶œà¶ºà¶±à·Š à¶à·à¶»à· නොමà·à¶.", +"Sunday" => "ඉරිදà·", +"Monday" => "සඳුදà·", +"Tuesday" => "අඟහරුවà·à¶¯à·", +"Wednesday" => "බදà·à¶¯à·", +"Thursday" => "à¶¶à·Šâ€à¶»à·„ස්පà¶à·’න්දà·", +"Friday" => "සිකුරà·à¶¯à·", +"Saturday" => "සෙනසුරà·à¶¯à·", +"January" => "ජනවà·à¶»à·’", +"February" => "පෙබරවà·à¶»à·’", +"March" => "මà·à¶»à·Šà¶à·”", +"April" => "à¶…à¶´à·Šâ€à¶»à·šà¶½à·Š", +"May" => "මà·à¶ºà·’", +"June" => "ජූනි", +"July" => "ජූලි", +"August" => "à¶…à¶œà·à·ƒà·Šà¶à·”", +"September" => "à·ƒà·à¶´à·Šà¶à·à¶¸à·Šà¶¶à¶»à·Š", +"October" => "ඔක්à¶à·à¶¶à¶»à·Š", +"November" => "නොවà·à¶¸à·Šà¶¶à¶»à·Š", +"December" => "දෙසà·à¶¸à·Šà¶¶à¶»à·Š", "Settings" => "à·ƒà·à¶šà·ƒà·”ම්", "seconds ago" => "à¶à¶à·Šà¶´à¶»à¶ºà¶±à·Šà¶§ පෙර", "1 minute ago" => "1 මිනිà¶à·Šà¶à·”වකට පෙර", @@ -15,6 +34,7 @@ "Yes" => "ඔව්", "Ok" => "හරි", "Error" => "දà·à·‚යක්", +"Share" => "බෙද෠හද෠ගන්න", "Share with" => "බෙදà·à¶œà¶±à·Šà¶±", "Share with link" => "යොමුවක් මඟින් බෙදà·à¶œà¶±à·Šà¶±", "Password protect" => "මුර පදයකින් ආරක්à·à·à¶šà¶»à¶±à·Šà¶±", @@ -61,25 +81,6 @@ "Database name" => "දà¶à·Šà¶à¶œà¶¶à¶©à·à·€à·š නම", "Database host" => "දà¶à·Šà¶à¶œà¶¶à¶©à· සේවà·à¶¯à·à¶ºà¶šà¶ºà·", "Finish setup" => "ස්ථà·à¶´à¶±à¶º කිරීම අවසන් කරන්න", -"Sunday" => "ඉරිදà·", -"Monday" => "සඳුදà·", -"Tuesday" => "අඟහරුවà·à¶¯à·", -"Wednesday" => "බදà·à¶¯à·", -"Thursday" => "à¶¶à·Šâ€à¶»à·„ස්පà¶à·’න්දà·", -"Friday" => "සිකුරà·à¶¯à·", -"Saturday" => "සෙනසුරà·à¶¯à·", -"January" => "ජනවà·à¶»à·’", -"February" => "පෙබරවà·à¶»à·’", -"March" => "මà·à¶»à·Šà¶à·”", -"April" => "à¶…à¶´à·Šâ€à¶»à·šà¶½à·Š", -"May" => "මà·à¶ºà·’", -"June" => "ජූනි", -"July" => "ජූලි", -"August" => "à¶…à¶œà·à·ƒà·Šà¶à·”", -"September" => "à·ƒà·à¶´à·Šà¶à·à¶¸à·Šà¶¶à¶»à·Š", -"October" => "ඔක්à¶à·à¶¶à¶»à·Š", -"November" => "නොවà·à¶¸à·Šà¶¶à¶»à·Š", -"December" => "දෙසà·à¶¸à·Šà¶¶à¶»à·Š", "web services under your control" => "ඔබට à¶´à·à¶½à¶±à¶º à¶šà·… à·„à·à¶šà·’ වෙබ් සේවà·à·€à¶±à·Š", "Log out" => "නික්මීම", "Lost your password?" => "මුරපදය අමà¶à¶šà¶¯?", diff --git a/core/l10n/sk_SK.php b/core/l10n/sk_SK.php index 286642ace7a..ad5ae0ea371 100644 --- a/core/l10n/sk_SK.php +++ b/core/l10n/sk_SK.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Chyba pri pridávanà %s do obľúbených položiek.", "No categories selected for deletion." => "Neboli vybrané žiadne kategórie pre odstránenie.", "Error removing %s from favorites." => "Chyba pri odstraňovanà %s z obľúbených položiek.", +"Sunday" => "Nedeľa", +"Monday" => "Pondelok", +"Tuesday" => "Utorok", +"Wednesday" => "Streda", +"Thursday" => "Å tvrtok", +"Friday" => "Piatok", +"Saturday" => "Sobota", +"January" => "Január", +"February" => "Február", +"March" => "Marec", +"April" => "AprÃl", +"May" => "Máj", +"June" => "Jún", +"July" => "Júl", +"August" => "August", +"September" => "September", +"October" => "Október", +"November" => "November", +"December" => "December", "Settings" => "Nastavenia", "seconds ago" => "pred sekundami", "1 minute ago" => "pred minútou", @@ -34,6 +53,8 @@ "Error" => "Chyba", "The app name is not specified." => "NeÅ¡pecifikované meno aplikácie.", "The required file {file} is not installed!" => "Požadovaný súbor {file} nie je inÅ¡talovaný!", +"Share" => "Zdieľaj", +"Shared" => "Zdieľané", "Error while sharing" => "Chyba poÄas zdieľania", "Error while unsharing" => "Chyba poÄas ukonÄenia zdieľania", "Error while changing permissions" => "Chyba poÄas zmeny oprávnenÃ", @@ -63,6 +84,8 @@ "Error setting expiration date" => "Chyba pri nastavenà dátumu vyprÅ¡ania platnosti", "Sending ..." => "Odosielam ...", "Email sent" => "Email odoslaný", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "Aktualizácia nebola úspeÅ¡ná. Problém nahláste na <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>.", +"The update was successful. Redirecting you to ownCloud now." => "Aktualizácia bola úspeÅ¡ná. Presmerovávam na ownCloud.", "ownCloud password reset" => "Obnovenie hesla pre ownCloud", "Use the following link to reset your password: {link}" => "Použite nasledujúci odkaz pre obnovenie vášho hesla: {link}", "You will receive a link to reset your password via Email." => "Odkaz pre obnovenie hesla obdržÃte e-mailom.", @@ -98,25 +121,6 @@ "Database tablespace" => "Tabuľkový priestor databázy", "Database host" => "Server databázy", "Finish setup" => "DokonÄiÅ¥ inÅ¡taláciu", -"Sunday" => "Nedeľa", -"Monday" => "Pondelok", -"Tuesday" => "Utorok", -"Wednesday" => "Streda", -"Thursday" => "Å tvrtok", -"Friday" => "Piatok", -"Saturday" => "Sobota", -"January" => "Január", -"February" => "Február", -"March" => "Marec", -"April" => "AprÃl", -"May" => "Máj", -"June" => "Jún", -"July" => "Júl", -"August" => "August", -"September" => "September", -"October" => "Október", -"November" => "November", -"December" => "December", "web services under your control" => "webové služby pod vaÅ¡ou kontrolou", "Log out" => "OdhlásiÅ¥", "Automatic logon rejected!" => "Automatické prihlásenie bolo zamietnuté!", diff --git a/core/l10n/sl.php b/core/l10n/sl.php index b2c924d412e..54cf817a7a0 100644 --- a/core/l10n/sl.php +++ b/core/l10n/sl.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Napaka pri dodajanju %s med priljubljene.", "No categories selected for deletion." => "Za izbris ni izbrana nobena kategorija.", "Error removing %s from favorites." => "Napaka pri odstranjevanju %s iz priljubljenih.", +"Sunday" => "nedelja", +"Monday" => "ponedeljek", +"Tuesday" => "torek", +"Wednesday" => "sreda", +"Thursday" => "Äetrtek", +"Friday" => "petek", +"Saturday" => "sobota", +"January" => "januar", +"February" => "februar", +"March" => "marec", +"April" => "april", +"May" => "maj", +"June" => "junij", +"July" => "julij", +"August" => "avgust", +"September" => "september", +"October" => "oktober", +"November" => "november", +"December" => "december", "Settings" => "Nastavitve", "seconds ago" => "pred nekaj sekundami", "1 minute ago" => "pred minuto", @@ -34,6 +53,7 @@ "Error" => "Napaka", "The app name is not specified." => "Ime aplikacije ni podano.", "The required file {file} is not installed!" => "Zahtevana datoteka {file} ni nameÅ¡Äena!", +"Share" => "Souporaba", "Error while sharing" => "Napaka med souporabo", "Error while unsharing" => "Napaka med odstranjevanjem souporabe", "Error while changing permissions" => "Napaka med spreminjanjem dovoljenj", @@ -98,25 +118,6 @@ "Database tablespace" => "Razpredelnica podatkovne zbirke", "Database host" => "Gostitelj podatkovne zbirke", "Finish setup" => "DokonÄaj namestitev", -"Sunday" => "nedelja", -"Monday" => "ponedeljek", -"Tuesday" => "torek", -"Wednesday" => "sreda", -"Thursday" => "Äetrtek", -"Friday" => "petek", -"Saturday" => "sobota", -"January" => "januar", -"February" => "februar", -"March" => "marec", -"April" => "april", -"May" => "maj", -"June" => "junij", -"July" => "julij", -"August" => "avgust", -"September" => "september", -"October" => "oktober", -"November" => "november", -"December" => "december", "web services under your control" => "spletne storitve pod vaÅ¡im nadzorom", "Log out" => "Odjava", "Automatic logon rejected!" => "Samodejno prijavljanje je zavrnjeno!", diff --git a/core/l10n/sr.php b/core/l10n/sr.php index 6b64d1957e7..ecd316b7cfb 100644 --- a/core/l10n/sr.php +++ b/core/l10n/sr.php @@ -1,4 +1,6 @@ <?php $TRANSLATIONS = array( +"User %s shared a file with you" => "КориÑник %s дели Ñа вама датотеку", +"User %s shared a folder with you" => "КориÑник %s дели Ñа вама директоријум", "Category type not provided." => "Ð’Ñ€Ñта категорије није унет.", "No category to add?" => "Додати још неку категорију?", "This category already exists: " => "Категорија већ поÑтоји:", @@ -7,6 +9,25 @@ "Error adding %s to favorites." => "Грешка приликом додавања %s у омиљене.", "No categories selected for deletion." => "Ðи једна категорија није означена за бриÑање.", "Error removing %s from favorites." => "Грешка приликом уклањања %s из омиљених", +"Sunday" => "Ðедеља", +"Monday" => "Понедељак", +"Tuesday" => "Уторак", +"Wednesday" => "Среда", +"Thursday" => "Четвртак", +"Friday" => "Петак", +"Saturday" => "Субота", +"January" => "Јануар", +"February" => "Фебруар", +"March" => "Март", +"April" => "Ðприл", +"May" => "Мај", +"June" => "Јун", +"July" => "Јул", +"August" => "ÐвгуÑÑ‚", +"September" => "Септембар", +"October" => "Октобар", +"November" => "Ðовембар", +"December" => "Децембар", "Settings" => "Подешавања", "seconds ago" => "пре неколико Ñекунди", "1 minute ago" => "пре 1 минут", @@ -30,6 +51,7 @@ "Error" => "Грешка", "The app name is not specified." => "Име програма није унето.", "The required file {file} is not installed!" => "Потребна датотека {file} није инÑталирана.", +"Share" => "Дељење", "Error while sharing" => "Грешка у дељењу", "Error while unsharing" => "Грешка код иÑкључења дељења", "Error while changing permissions" => "Грешка код промене дозвола", @@ -39,6 +61,7 @@ "Share with link" => "Подели линк", "Password protect" => "Заштићено лозинком", "Password" => "Лозинка", +"Send" => "Пошаљи", "Set expiration date" => "ПоÑтави датум иÑтека", "Expiration date" => "Датум иÑтека", "Share via email:" => "Подели поштом:", @@ -55,6 +78,8 @@ "Password protected" => "Заштићено лозинком", "Error unsetting expiration date" => "Грешка код поништавања датума иÑтека", "Error setting expiration date" => "Грешка код поÑтављања датума иÑтека", +"Sending ..." => "Шаљем...", +"Email sent" => "Порука је поÑлата", "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." => "Добићете везу за реÑетовање лозинке путем е-поште.", @@ -90,25 +115,6 @@ "Database tablespace" => "Радни проÑтор базе података", "Database host" => "Домаћин базе", "Finish setup" => "Заврши подешавање", -"Sunday" => "Ðедеља", -"Monday" => "Понедељак", -"Tuesday" => "Уторак", -"Wednesday" => "Среда", -"Thursday" => "Четвртак", -"Friday" => "Петак", -"Saturday" => "Субота", -"January" => "Јануар", -"February" => "Фебруар", -"March" => "Март", -"April" => "Ðприл", -"May" => "Мај", -"June" => "Јун", -"July" => "Јул", -"August" => "ÐвгуÑÑ‚", -"September" => "Септембар", -"October" => "Октобар", -"November" => "Ðовембар", -"December" => "Децембар", "web services under your control" => "веб ÑервиÑи под контролом", "Log out" => "Одјава", "Automatic logon rejected!" => "ÐутоматÑка пријава је одбијена!", @@ -118,5 +124,6 @@ "remember" => "упамти", "Log in" => "Пријава", "prev" => "претходно", -"next" => "Ñледеће" +"next" => "Ñледеће", +"Updating ownCloud to version %s, this may take a while." => "Ðадоградња ownCloud-а на верзију %s, Ñачекајте тренутак." ); diff --git a/core/l10n/sr@latin.php b/core/l10n/sr@latin.php index efcb7c10f01..ec3eab34e29 100644 --- a/core/l10n/sr@latin.php +++ b/core/l10n/sr@latin.php @@ -1,4 +1,23 @@ <?php $TRANSLATIONS = array( +"Sunday" => "Nedelja", +"Monday" => "Ponedeljak", +"Tuesday" => "Utorak", +"Wednesday" => "Sreda", +"Thursday" => "ÄŒetvrtak", +"Friday" => "Petak", +"Saturday" => "Subota", +"January" => "Januar", +"February" => "Februar", +"March" => "Mart", +"April" => "April", +"May" => "Maj", +"June" => "Jun", +"July" => "Jul", +"August" => "Avgust", +"September" => "Septembar", +"October" => "Oktobar", +"November" => "Novembar", +"December" => "Decembar", "Settings" => "PodeÅ¡avanja", "Cancel" => "Otkaži", "Password" => "Lozinka", @@ -24,25 +43,6 @@ "Database name" => "Ime baze", "Database host" => "Domaćin baze", "Finish setup" => "ZavrÅ¡i podeÅ¡avanje", -"Sunday" => "Nedelja", -"Monday" => "Ponedeljak", -"Tuesday" => "Utorak", -"Wednesday" => "Sreda", -"Thursday" => "ÄŒetvrtak", -"Friday" => "Petak", -"Saturday" => "Subota", -"January" => "Januar", -"February" => "Februar", -"March" => "Mart", -"April" => "April", -"May" => "Maj", -"June" => "Jun", -"July" => "Jul", -"August" => "Avgust", -"September" => "Septembar", -"October" => "Oktobar", -"November" => "Novembar", -"December" => "Decembar", "Log out" => "Odjava", "Lost your password?" => "Izgubili ste lozinku?", "remember" => "upamti", diff --git a/core/l10n/sv.php b/core/l10n/sv.php index 70a9871be26..a0dde652693 100644 --- a/core/l10n/sv.php +++ b/core/l10n/sv.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Fel vid tillägg av %s till favoriter.", "No categories selected for deletion." => "Inga kategorier valda för radering.", "Error removing %s from favorites." => "Fel vid borttagning av %s frÃ¥n favoriter.", +"Sunday" => "Söndag", +"Monday" => "MÃ¥ndag", +"Tuesday" => "Tisdag", +"Wednesday" => "Onsdag", +"Thursday" => "Torsdag", +"Friday" => "Fredag", +"Saturday" => "Lördag", +"January" => "Januari", +"February" => "Februari", +"March" => "Mars", +"April" => "April", +"May" => "Maj", +"June" => "Juni", +"July" => "Juli", +"August" => "Augusti", +"September" => "September", +"October" => "Oktober", +"November" => "November", +"December" => "December", "Settings" => "Inställningar", "seconds ago" => "sekunder sedan", "1 minute ago" => "1 minut sedan", @@ -34,6 +53,8 @@ "Error" => "Fel", "The app name is not specified." => " Namnet pÃ¥ appen är inte specificerad.", "The required file {file} is not installed!" => "Den nödvändiga filen {file} är inte installerad!", +"Share" => "Dela", +"Shared" => "Delad", "Error while sharing" => "Fel vid delning", "Error while unsharing" => "Fel när delning skulle avslutas", "Error while changing permissions" => "Fel vid ändring av rättigheter", @@ -63,6 +84,8 @@ "Error setting expiration date" => "Fel vid sättning av utgÃ¥ngsdatum", "Sending ..." => "Skickar ...", "Email sent" => "E-post skickat", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "Uppdateringen misslyckades. Rapportera detta problem till <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud-gemenskapen</a>.", +"The update was successful. Redirecting you to ownCloud now." => "Uppdateringen lyckades. Du omdirigeras nu till OwnCloud", "ownCloud password reset" => "ownCloud lösenordsÃ¥terställning", "Use the following link to reset your password: {link}" => "Använd följande länk för att Ã¥terställa lösenordet: {link}", "You will receive a link to reset your password via Email." => "Du fÃ¥r en länk att Ã¥terställa ditt lösenord via e-post.", @@ -98,25 +121,6 @@ "Database tablespace" => "Databas tabellutrymme", "Database host" => "Databasserver", "Finish setup" => "Avsluta installation", -"Sunday" => "Söndag", -"Monday" => "MÃ¥ndag", -"Tuesday" => "Tisdag", -"Wednesday" => "Onsdag", -"Thursday" => "Torsdag", -"Friday" => "Fredag", -"Saturday" => "Lördag", -"January" => "Januari", -"February" => "Februari", -"March" => "Mars", -"April" => "April", -"May" => "Maj", -"June" => "Juni", -"July" => "Juli", -"August" => "Augusti", -"September" => "September", -"October" => "Oktober", -"November" => "November", -"December" => "December", "web services under your control" => "webbtjänster under din kontroll", "Log out" => "Logga ut", "Automatic logon rejected!" => "Automatisk inloggning inte tillÃ¥ten!", diff --git a/core/l10n/ta_LK.php b/core/l10n/ta_LK.php index 65cfbbf965d..2b8829c717f 100644 --- a/core/l10n/ta_LK.php +++ b/core/l10n/ta_LK.php @@ -7,6 +7,25 @@ "Error adding %s to favorites." => "விரà¯à®ªà¯à®ªà®™à¯à®•ளà¯à®•à¯à®•௠%s ஠சேரà¯à®ªà¯à®ªà®¤à®¿à®²à¯ வழà¯", "No categories selected for deletion." => "நீகà¯à®•à¯à®µà®¤à®±à¯à®•௠எநà¯à®¤à®ªà¯ பிரிவà¯à®®à¯ தெரிவà¯à®šà¯†à®¯à¯à®¯à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ.", "Error removing %s from favorites." => "விரà¯à®ªà¯à®ªà®¤à¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ %s ஠அகறà¯à®±à¯à®µà®¤à®¿à®²à¯ வழà¯.உஇஇ", +"Sunday" => "ஞாயிறà¯à®±à¯à®•à¯à®•ிழமை", +"Monday" => "திஙà¯à®•டà¯à®•ிழமை", +"Tuesday" => "செவà¯à®µà®¾à®¯à¯à®•à¯à®•ிழமை", +"Wednesday" => "பà¯à®¤à®©à¯à®•ிழமை", +"Thursday" => "வியாழகà¯à®•ிழமை", +"Friday" => "வெளà¯à®³à®¿à®•à¯à®•ிழமை", +"Saturday" => "சனிகà¯à®•ிழமை", +"January" => "தை", +"February" => "மாசி", +"March" => "பஙà¯à®•à¯à®©à®¿", +"April" => "சிதà¯à®¤à®¿à®°à¯ˆ", +"May" => "வைகாசி", +"June" => "ஆனி", +"July" => "ஆடி", +"August" => "ஆவணி", +"September" => "பà¯à®°à®Ÿà¯à®Ÿà®¾à®šà®¿", +"October" => "à®à®ªà¯à®ªà®šà®¿", +"November" => "காரà¯à®¤à¯à®¤à®¿à®•ை", +"December" => "மாரà¯à®•ழி", "Settings" => "அமைபà¯à®ªà¯à®•ளà¯", "seconds ago" => "செகà¯à®•னà¯à®•ளà¯à®•à¯à®•௠மà¯à®©à¯", "1 minute ago" => "1 நிமிடதà¯à®¤à®¿à®±à¯à®•௠மà¯à®©à¯ ", @@ -30,6 +49,7 @@ "Error" => "வழà¯", "The app name is not specified." => "செயலி பெயர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ.", "The required file {file} is not installed!" => "தேவைபà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà¯ {கோபà¯à®ªà¯} நிறà¯à®µà®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ!", +"Share" => "பகிரà¯à®µà¯", "Error while sharing" => "பகிரà¯à®®à¯ போதான வழà¯", "Error while unsharing" => "பகிராமல௠உளà¯à®³à®ªà¯à®ªà¯‹à®¤à®¾à®© வழà¯", "Error while changing permissions" => "அனà¯à®®à®¤à®¿à®•ள௠மாறà¯à®®à¯à®ªà¯‹à®¤à®¾à®© வழà¯", @@ -90,25 +110,6 @@ "Database tablespace" => "தரவà¯à®¤à¯à®¤à®³ அடà¯à®Ÿà®µà®£à¯ˆ", "Database host" => "தரவà¯à®¤à¯à®¤à®³ ஓமà¯à®ªà¯à®©à®°à¯", "Finish setup" => "அமைபà¯à®ªà¯ˆ à®®à¯à®Ÿà®¿à®•à¯à®•", -"Sunday" => "ஞாயிறà¯à®±à¯à®•à¯à®•ிழமை", -"Monday" => "திஙà¯à®•டà¯à®•ிழமை", -"Tuesday" => "செவà¯à®µà®¾à®¯à¯à®•à¯à®•ிழமை", -"Wednesday" => "பà¯à®¤à®©à¯à®•ிழமை", -"Thursday" => "வியாழகà¯à®•ிழமை", -"Friday" => "வெளà¯à®³à®¿à®•à¯à®•ிழமை", -"Saturday" => "சனிகà¯à®•ிழமை", -"January" => "தை", -"February" => "மாசி", -"March" => "பஙà¯à®•à¯à®©à®¿", -"April" => "சிதà¯à®¤à®¿à®°à¯ˆ", -"May" => "வைகாசி", -"June" => "ஆனி", -"July" => "ஆடி", -"August" => "ஆவணி", -"September" => "பà¯à®°à®Ÿà¯à®Ÿà®¾à®šà®¿", -"October" => "à®à®ªà¯à®ªà®šà®¿", -"November" => "காரà¯à®¤à¯à®¤à®¿à®•ை", -"December" => "மாரà¯à®•ழி", "web services under your control" => "உஙà¯à®•ள௠கடà¯à®Ÿà¯à®ªà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®©à¯ கீழ௠இணைய சேவைகளà¯", "Log out" => "விடà¯à®ªà®¤à®¿à®•ை செயà¯à®•", "Automatic logon rejected!" => "தனà¯à®©à®¿à®šà¯à®šà¯ˆà®¯à®¾à®© பà¯à®•à¯à®ªà®¤à®¿à®•ை நிராகரிபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯!", diff --git a/core/l10n/th_TH.php b/core/l10n/th_TH.php index bcbd70d03e6..7e00ac6e2df 100644 --- a/core/l10n/th_TH.php +++ b/core/l10n/th_TH.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดในà¸à¸²à¸£à¹€à¸žà¸´à¹ˆà¸¡ %s เข้าไปยังรายà¸à¸²à¸£à¹‚ปรด", "No categories selected for deletion." => "ยังไม่ได้เลืà¸à¸à¸«à¸¡à¸§à¸”หมู่ที่ต้à¸à¸‡à¸à¸²à¸£à¸¥à¸š", "Error removing %s from favorites." => "เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดในà¸à¸²à¸£à¸¥à¸š %s à¸à¸à¸à¸ˆà¸²à¸à¸£à¸²à¸¢à¸à¸²à¸£à¹‚ปรด", +"Sunday" => "วันà¸à¸²à¸—ิตย์", +"Monday" => "วันจันทร์", +"Tuesday" => "วันà¸à¸±à¸‡à¸„าร", +"Wednesday" => "วันพุธ", +"Thursday" => "วันพฤหัสบดี", +"Friday" => "วันศุà¸à¸£à¹Œ", +"Saturday" => "วันเสาร์", +"January" => "มà¸à¸£à¸²à¸„ม", +"February" => "à¸à¸¸à¸¡à¸ าพันธ์", +"March" => "มีนาคม", +"April" => "เมษายน", +"May" => "พฤษภาคม", +"June" => "มิถุนายน", +"July" => "à¸à¸£à¸à¸à¸²à¸„ม", +"August" => "สิงหาคม", +"September" => "à¸à¸±à¸™à¸¢à¸²à¸¢à¸™", +"October" => "ตุลาคม", +"November" => "พฤศจิà¸à¸²à¸¢à¸™", +"December" => "ธันวาคม", "Settings" => "ตั้งค่า", "seconds ago" => "วินาที à¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰", "1 minute ago" => "1 นาทีà¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰", @@ -34,6 +53,7 @@ "Error" => "พบข้à¸à¸œà¸´à¸”พลาด", "The app name is not specified." => "ชื่à¸à¸‚à¸à¸‡à¹à¸à¸›à¸¢à¸±à¸‡à¹„ม่ได้รับà¸à¸²à¸£à¸£à¸°à¸šà¸¸à¸Šà¸·à¹ˆà¸", "The required file {file} is not installed!" => "ไฟล์ {file} ซึ่งเป็นไฟล์ที่จำเป็นต้à¸à¸‡à¹„ด้รับà¸à¸²à¸£à¸•ิดตั้งไว้à¸à¹ˆà¸à¸™ ยังไม่ได้ถูà¸à¸•ิดตั้ง", +"Share" => "à¹à¸Šà¸£à¹Œ", "Error while sharing" => "เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดในระหว่างà¸à¸²à¸£à¹à¸Šà¸£à¹Œà¸‚้à¸à¸¡à¸¹à¸¥", "Error while unsharing" => "เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดในà¸à¸²à¸£à¸¢à¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹à¸Šà¸£à¹Œà¸‚้à¸à¸¡à¸¹à¸¥", "Error while changing permissions" => "เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดในà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸ªà¸´à¸—ธิ์à¸à¸²à¸£à¹€à¸‚้าใช้งาน", @@ -63,6 +83,8 @@ "Error setting expiration date" => "เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดในà¸à¸²à¸£à¸•ั้งค่าวันที่หมดà¸à¸²à¸¢à¸¸", "Sending ..." => "à¸à¸³à¸¥à¸±à¸‡à¸ªà¹ˆà¸‡...", "Email sent" => "ส่งà¸à¸µà¹€à¸¡à¸¥à¹Œà¹à¸¥à¹‰à¸§", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "à¸à¸²à¸£à¸à¸±à¸žà¹€à¸”ทไม่เป็นผลสำเร็จ à¸à¸£à¸¸à¸“าà¹à¸ˆà¹‰à¸‡à¸›à¸±à¸à¸«à¸²à¸—ี่เà¸à¸´à¸”ขึ้นไปยัง <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">คà¸à¸¡à¸¡à¸¹à¸™à¸´à¸•ี้ผู้ใช้งาน ownCloud</a>", +"The update was successful. Redirecting you to ownCloud now." => "à¸à¸²à¸£à¸à¸±à¸žà¹€à¸”ทเสร็จเรียบร้à¸à¸¢à¹à¸¥à¹‰à¸§ à¸à¸³à¸¥à¸±à¸‡à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹€à¸ªà¹‰à¸™à¸—างไปที่ ownCloud à¸à¸¢à¸¹à¹ˆà¹ƒà¸™à¸‚ณะนี้", "ownCloud password reset" => "รีเซ็ตรหัสผ่าน ownCloud", "Use the following link to reset your password: {link}" => "ใช้ลิงค์ต่à¸à¹„ปนี้เพื่à¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¸‚à¸à¸‡à¸„ุณใหม่: {link}", "You will receive a link to reset your password via Email." => "คุณจะได้รับลิงค์เพื่à¸à¸à¸³à¸«à¸™à¸”รหัสผ่านใหม่ทางà¸à¸µà¹€à¸¡à¸¥à¹Œ", @@ -98,25 +120,6 @@ "Database tablespace" => "พื้นที่ตารางในà¸à¸²à¸™à¸‚้à¸à¸¡à¸¹à¸¥", "Database host" => "Database host", "Finish setup" => "ติดตั้งเรียบร้à¸à¸¢à¹à¸¥à¹‰à¸§", -"Sunday" => "วันà¸à¸²à¸—ิตย์", -"Monday" => "วันจันทร์", -"Tuesday" => "วันà¸à¸±à¸‡à¸„าร", -"Wednesday" => "วันพุธ", -"Thursday" => "วันพฤหัสบดี", -"Friday" => "วันศุà¸à¸£à¹Œ", -"Saturday" => "วันเสาร์", -"January" => "มà¸à¸£à¸²à¸„ม", -"February" => "à¸à¸¸à¸¡à¸ าพันธ์", -"March" => "มีนาคม", -"April" => "เมษายน", -"May" => "พฤษภาคม", -"June" => "มิถุนายน", -"July" => "à¸à¸£à¸à¸à¸²à¸„ม", -"August" => "สิงหาคม", -"September" => "à¸à¸±à¸™à¸¢à¸²à¸¢à¸™", -"October" => "ตุลาคม", -"November" => "พฤศจิà¸à¸²à¸¢à¸™", -"December" => "ธันวาคม", "web services under your control" => "web services under your control", "Log out" => "à¸à¸à¸à¸ˆà¸²à¸à¸£à¸°à¸šà¸š", "Automatic logon rejected!" => "à¸à¸²à¸£à¹€à¸‚้าสู่ระบบà¸à¸±à¸•โนมัติถูà¸à¸›à¸à¸´à¹€à¸ªà¸˜à¹à¸¥à¹‰à¸§", diff --git a/core/l10n/tr.php b/core/l10n/tr.php index 58e28a9b3b9..624887674d1 100644 --- a/core/l10n/tr.php +++ b/core/l10n/tr.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "%s favorilere eklenirken hata oluÅŸtu", "No categories selected for deletion." => "Silmek için bir kategori seçilmedi", "Error removing %s from favorites." => "%s favorilere çıkarılırken hata oluÅŸtu", +"Sunday" => "Pazar", +"Monday" => "Pazartesi", +"Tuesday" => "Salı", +"Wednesday" => "ÇarÅŸamba", +"Thursday" => "PerÅŸembe", +"Friday" => "Cuma", +"Saturday" => "Cumartesi", +"January" => "Ocak", +"February" => "Åžubat", +"March" => "Mart", +"April" => "Nisan", +"May" => "Mayıs", +"June" => "Haziran", +"July" => "Temmuz", +"August" => "AÄŸustos", +"September" => "Eylül", +"October" => "Ekim", +"November" => "Kasım", +"December" => "Aralık", "Settings" => "Ayarlar", "seconds ago" => "saniye önce", "1 minute ago" => "1 dakika önce", @@ -34,6 +53,7 @@ "Error" => "Hata", "The app name is not specified." => "uygulama adı belirtilmedi.", "The required file {file} is not installed!" => "İhtiyaç duyulan {file} dosyası kurulu deÄŸil.", +"Share" => "PaylaÅŸ", "Error while sharing" => "Paylaşım sırasında hata ", "Error while unsharing" => "Paylaşım iptal ediliyorken hata", "Error while changing permissions" => "İzinleri deÄŸiÅŸtirirken hata oluÅŸtu", @@ -98,25 +118,6 @@ "Database tablespace" => "Veritabanı tablo alanı", "Database host" => "Veritabanı sunucusu", "Finish setup" => "Kurulumu tamamla", -"Sunday" => "Pazar", -"Monday" => "Pazartesi", -"Tuesday" => "Salı", -"Wednesday" => "ÇarÅŸamba", -"Thursday" => "PerÅŸembe", -"Friday" => "Cuma", -"Saturday" => "Cumartesi", -"January" => "Ocak", -"February" => "Åžubat", -"March" => "Mart", -"April" => "Nisan", -"May" => "Mayıs", -"June" => "Haziran", -"July" => "Temmuz", -"August" => "AÄŸustos", -"September" => "Eylül", -"October" => "Ekim", -"November" => "Kasım", -"December" => "Aralık", "web services under your control" => "kontrolünüzdeki web servisleri", "Log out" => "Çıkış yap", "Automatic logon rejected!" => "Otomatik oturum açma reddedildi!", diff --git a/core/l10n/uk.php b/core/l10n/uk.php index 88e18d3eb28..fa8150e7c9d 100644 --- a/core/l10n/uk.php +++ b/core/l10n/uk.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "Помилка при додаванні %s до обраного.", "No categories selected for deletion." => "Жодної категорії не обрано Ð´Ð»Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ.", "Error removing %s from favorites." => "Помилка при видалені %s із обраного.", +"Sunday" => "ÐеділÑ", +"Monday" => "Понеділок", +"Tuesday" => "Вівторок", +"Wednesday" => "Середа", +"Thursday" => "Четвер", +"Friday" => "П'ÑтницÑ", +"Saturday" => "Субота", +"January" => "Січень", +"February" => "Лютий", +"March" => "Березень", +"April" => "Квітень", +"May" => "Травень", +"June" => "Червень", +"July" => "Липень", +"August" => "Серпень", +"September" => "ВереÑень", +"October" => "Жовтень", +"November" => "ЛиÑтопад", +"December" => "Грудень", "Settings" => "ÐалаштуваннÑ", "seconds ago" => "Ñекунди тому", "1 minute ago" => "1 хвилину тому", @@ -34,6 +53,7 @@ "Error" => "Помилка", "The app name is not specified." => "Ðе визначено ім'Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸.", "The required file {file} is not installed!" => "Ðеобхідний файл {file} не вÑтановлено!", +"Share" => "ПоділитиÑÑ", "Error while sharing" => "Помилка під Ñ‡Ð°Ñ Ð¿ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ†Ñ–Ñ—", "Error while unsharing" => "Помилка під Ñ‡Ð°Ñ Ð²Ñ–Ð´Ð¼Ñ–Ð½Ð¸ публікації", "Error while changing permissions" => "Помилка при зміні повноважень", @@ -98,25 +118,6 @@ "Database tablespace" => "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð±Ð°Ð·Ð¸ даних", "Database host" => "ХоÑÑ‚ бази даних", "Finish setup" => "Завершити налаштуваннÑ", -"Sunday" => "ÐеділÑ", -"Monday" => "Понеділок", -"Tuesday" => "Вівторок", -"Wednesday" => "Середа", -"Thursday" => "Четвер", -"Friday" => "П'ÑтницÑ", -"Saturday" => "Субота", -"January" => "Січень", -"February" => "Лютий", -"March" => "Березень", -"April" => "Квітень", -"May" => "Травень", -"June" => "Червень", -"July" => "Липень", -"August" => "Серпень", -"September" => "ВереÑень", -"October" => "Жовтень", -"November" => "ЛиÑтопад", -"December" => "Грудень", "web services under your control" => "веб-ÑÐµÑ€Ð²Ñ–Ñ Ð¿Ñ–Ð´ вашим контролем", "Log out" => "Вихід", "Automatic logon rejected!" => "Ðвтоматичний вхід в ÑиÑтему відхилений!", diff --git a/core/l10n/vi.php b/core/l10n/vi.php index c827dc038e6..078cfa8dd8c 100644 --- a/core/l10n/vi.php +++ b/core/l10n/vi.php @@ -1,4 +1,8 @@ <?php $TRANSLATIONS = array( +"User %s shared a file with you" => "%s chia sẻ táºp tin nà y cho bạn", +"User %s shared a folder with you" => "%s chia sẻ thư mục nà y cho bạn", +"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Ngưá»i dùng %s chia sẻ táºp tin \"%s\" cho bạn .Bạn có thể tải tại đây : %s", +"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Ngưá»i dùng %s chia sẻ thư mục \"%s\" cho bạn .Bạn có thể tải tại đây : %s", "Category type not provided." => "Kiểu hạng mục không được cung cấp.", "No category to add?" => "Không có danh mục được thêm?", "This category already exists: " => "Danh mục nà y đã được tạo :", @@ -7,6 +11,25 @@ "Error adding %s to favorites." => "Lá»—i thêm %s và o mục yêu thÃch.", "No categories selected for deletion." => "Không có thể loại nà o được chá»n để xóa.", "Error removing %s from favorites." => "Lá»—i xóa %s từ mục yêu thÃch.", +"Sunday" => "Chá»§ nháºt", +"Monday" => "Thứ 2", +"Tuesday" => "Thứ 3", +"Wednesday" => "Thứ 4", +"Thursday" => "Thứ 5", +"Friday" => "Thứ ", +"Saturday" => "Thứ 7", +"January" => "Tháng 1", +"February" => "Tháng 2", +"March" => "Tháng 3", +"April" => "Tháng 4", +"May" => "Tháng 5", +"June" => "Tháng 6", +"July" => "Tháng 7", +"August" => "Tháng 8", +"September" => "Tháng 9", +"October" => "Tháng 10", +"November" => "Tháng 11", +"December" => "Tháng 12", "Settings" => "Cà i đặt", "seconds ago" => "và i giây trước", "1 minute ago" => "1 phút trước", @@ -30,6 +53,7 @@ "Error" => "Lá»—i", "The app name is not specified." => "Tên ứng dụng không được chỉ định.", "The required file {file} is not installed!" => "Táºp tin cần thiết {file} không được cà i đặt!", +"Share" => "Chia sẻ", "Error while sharing" => "Lá»—i trong quá trình chia sẻ", "Error while unsharing" => "Lá»—i trong quá trình gỡ chia sẻ", "Error while changing permissions" => "Lá»—i trong quá trình phân quyá»n", @@ -39,6 +63,7 @@ "Share with link" => "Chia sẻ vá»›i liên kết", "Password protect" => "Máºt khẩu bảo vệ", "Password" => "Máºt khẩu", +"Send" => "Gởi", "Set expiration date" => "Äặt ngà y kết thúc", "Expiration date" => "Ngà y kết thúc", "Share via email:" => "Chia sẻ thông qua email", @@ -55,6 +80,9 @@ "Password protected" => "Máºt khẩu bảo vệ", "Error unsetting expiration date" => "Lá»—i không thiết láºp ngà y kết thúc", "Error setting expiration date" => "Lá»—i cấu hình ngà y kết thúc", +"Sending ..." => "Äang gởi ...", +"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "Cáºp nháºt không thà nh công . Vui lòng thông báo đến <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\"> Cá»™ng đồng ownCloud </a>.", +"The update was successful. Redirecting you to ownCloud now." => "Cáºp nháºt thà nh công .Hệ thống sẽ đưa bạn tá»›i ownCloud.", "ownCloud password reset" => "Khôi phục máºt khẩu Owncloud ", "Use the following link to reset your password: {link}" => "Dùng đưá»ng dẫn sau để khôi phục lại máºt khẩu : {link}", "You will receive a link to reset your password via Email." => "Vui lòng kiểm tra Email để khôi phục lại máºt khẩu.", @@ -90,25 +118,6 @@ "Database tablespace" => "CÆ¡ sở dữ liệu tablespace", "Database host" => "Database host", "Finish setup" => "Cà i đặt hoà n tất", -"Sunday" => "Chá»§ nháºt", -"Monday" => "Thứ 2", -"Tuesday" => "Thứ 3", -"Wednesday" => "Thứ 4", -"Thursday" => "Thứ 5", -"Friday" => "Thứ ", -"Saturday" => "Thứ 7", -"January" => "Tháng 1", -"February" => "Tháng 2", -"March" => "Tháng 3", -"April" => "Tháng 4", -"May" => "Tháng 5", -"June" => "Tháng 6", -"July" => "Tháng 7", -"August" => "Tháng 8", -"September" => "Tháng 9", -"October" => "Tháng 10", -"November" => "Tháng 11", -"December" => "Tháng 12", "web services under your control" => "các dịch vụ web dưới sá»± kiểm soát cá»§a bạn", "Log out" => "Äăng xuất", "Automatic logon rejected!" => "Tá»± động đăng nháºp đã bị từ chối !", diff --git a/core/l10n/zh_CN.GB2312.php b/core/l10n/zh_CN.GB2312.php index 74dd9ad8a3f..9617d7260dc 100644 --- a/core/l10n/zh_CN.GB2312.php +++ b/core/l10n/zh_CN.GB2312.php @@ -2,6 +2,25 @@ "No category to add?" => "æ²¡æœ‰åˆ†ç±»æ·»åŠ äº†?", "This category already exists: " => "这个分类已ç»å˜åœ¨äº†:", "No categories selected for deletion." => "没有选者è¦åˆ 除的分类.", +"Sunday" => "星期天", +"Monday" => "星期一", +"Tuesday" => "星期二", +"Wednesday" => "星期三", +"Thursday" => "星期四", +"Friday" => "星期五", +"Saturday" => "星期å…", +"January" => "一月", +"February" => "二月", +"March" => "三月", +"April" => "四月", +"May" => "五月", +"June" => "å…æœˆ", +"July" => "七月", +"August" => "八月", +"September" => "乿œˆ", +"October" => "åæœˆ", +"November" => "å一月", +"December" => "å二月", "Settings" => "设置", "seconds ago" => "ç§’å‰", "1 minute ago" => "1 分钟å‰", @@ -19,6 +38,7 @@ "Yes" => "是", "Ok" => "好的", "Error" => "错误", +"Share" => "分享", "Error while sharing" => "分享出错", "Error while unsharing" => "å–æ¶ˆåˆ†äº«å‡ºé”™", "Error while changing permissions" => "å˜æ›´æƒé™å‡ºé”™", @@ -79,25 +99,6 @@ "Database tablespace" => "æ•°æ®åº“è¡¨æ ¼ç©ºé—´", "Database host" => "æ•°æ®åº“主机", "Finish setup" => "完æˆå®‰è£…", -"Sunday" => "星期天", -"Monday" => "星期一", -"Tuesday" => "星期二", -"Wednesday" => "星期三", -"Thursday" => "星期四", -"Friday" => "星期五", -"Saturday" => "星期å…", -"January" => "一月", -"February" => "二月", -"March" => "三月", -"April" => "四月", -"May" => "五月", -"June" => "å…æœˆ", -"July" => "七月", -"August" => "八月", -"September" => "乿œˆ", -"October" => "åæœˆ", -"November" => "å一月", -"December" => "å二月", "web services under your control" => "ä½ æŽ§åˆ¶ä¸‹çš„ç½‘ç»œæœåŠ¡", "Log out" => "注销", "Automatic logon rejected!" => "自动登录被拒ç»ï¼", diff --git a/core/l10n/zh_CN.php b/core/l10n/zh_CN.php index 626ede4cc70..f18fd6b357d 100644 --- a/core/l10n/zh_CN.php +++ b/core/l10n/zh_CN.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "呿”¶è—夹䏿–°å¢ž%s时出错。", "No categories selected for deletion." => "没有选择è¦åˆ 除的类别", "Error removing %s from favorites." => "从收è—夹ä¸ç§»é™¤%s时出错。", +"Sunday" => "星期日", +"Monday" => "星期一", +"Tuesday" => "星期二", +"Wednesday" => "星期三", +"Thursday" => "星期四", +"Friday" => "星期五", +"Saturday" => "星期å…", +"January" => "一月", +"February" => "二月", +"March" => "三月", +"April" => "四月", +"May" => "五月", +"June" => "å…æœˆ", +"July" => "七月", +"August" => "八月", +"September" => "乿œˆ", +"October" => "åæœˆ", +"November" => "å一月", +"December" => "å二月", "Settings" => "设置", "seconds ago" => "ç§’å‰", "1 minute ago" => "一分钟å‰", @@ -34,6 +53,8 @@ "Error" => "错误", "The app name is not specified." => "未指定Appå称。", "The required file {file} is not installed!" => "所需文件{file}未安装ï¼", +"Share" => "共享", +"Shared" => "已共享", "Error while sharing" => "共享时出错", "Error while unsharing" => "å–æ¶ˆå…±äº«æ—¶å‡ºé”™", "Error while changing permissions" => "修改æƒé™æ—¶å‡ºé”™", @@ -98,25 +119,6 @@ "Database tablespace" => "æ•°æ®åº“表空间", "Database host" => "æ•°æ®åº“主机", "Finish setup" => "安装完æˆ", -"Sunday" => "星期日", -"Monday" => "星期一", -"Tuesday" => "星期二", -"Wednesday" => "星期三", -"Thursday" => "星期四", -"Friday" => "星期五", -"Saturday" => "星期å…", -"January" => "一月", -"February" => "二月", -"March" => "三月", -"April" => "四月", -"May" => "五月", -"June" => "å…æœˆ", -"July" => "七月", -"August" => "八月", -"September" => "乿œˆ", -"October" => "åæœˆ", -"November" => "å一月", -"December" => "å二月", "web services under your control" => "由您掌控的网络æœåŠ¡", "Log out" => "注销", "Automatic logon rejected!" => "自动登录被拒ç»ï¼", diff --git a/core/l10n/zh_TW.php b/core/l10n/zh_TW.php index 7537c764451..74cb3b34d08 100644 --- a/core/l10n/zh_TW.php +++ b/core/l10n/zh_TW.php @@ -11,6 +11,25 @@ "Error adding %s to favorites." => "åŠ å…¥ %s 到最愛時發生錯誤。", "No categories selected for deletion." => "æ²’æœ‰é¸æ“‡è¦åˆªé™¤çš„分類。", "Error removing %s from favorites." => "從最愛移除 %s 時發生錯誤。", +"Sunday" => "週日", +"Monday" => "週一", +"Tuesday" => "週二", +"Wednesday" => "週三", +"Thursday" => "週四", +"Friday" => "週五", +"Saturday" => "週å…", +"January" => "一月", +"February" => "二月", +"March" => "三月", +"April" => "四月", +"May" => "五月", +"June" => "å…æœˆ", +"July" => "七月", +"August" => "八月", +"September" => "乿œˆ", +"October" => "åæœˆ", +"November" => "å一月", +"December" => "å二月", "Settings" => "è¨å®š", "seconds ago" => "幾秒å‰", "1 minute ago" => "1 分é˜å‰", @@ -34,6 +53,7 @@ "Error" => "錯誤", "The app name is not specified." => "沒有指定 app å稱。", "The required file {file} is not installed!" => "æ²’æœ‰å®‰è£æ‰€éœ€çš„æª”案 {file} ï¼", +"Share" => "分享", "Error while sharing" => "分享時發生錯誤", "Error while unsharing" => "å–æ¶ˆåˆ†äº«æ™‚發生錯誤", "Error while changing permissions" => "ä¿®æ”¹æ¬Šé™æ™‚發生錯誤", @@ -98,25 +118,6 @@ "Database tablespace" => "資料庫 tablespace", "Database host" => "資料庫主機", "Finish setup" => "完æˆè¨å®š", -"Sunday" => "週日", -"Monday" => "週一", -"Tuesday" => "週二", -"Wednesday" => "週三", -"Thursday" => "週四", -"Friday" => "週五", -"Saturday" => "週å…", -"January" => "一月", -"February" => "二月", -"March" => "三月", -"April" => "四月", -"May" => "五月", -"June" => "å…æœˆ", -"July" => "七月", -"August" => "八月", -"September" => "乿œˆ", -"October" => "åæœˆ", -"November" => "å一月", -"December" => "å二月", "web services under your control" => "網路æœå‹™åœ¨æ‚¨æŽ§åˆ¶ä¹‹ä¸‹", "Log out" => "登出", "Automatic logon rejected!" => "自動登入被拒ï¼", diff --git a/core/routes.php b/core/routes.php index fc511d403d8..7408858b107 100644 --- a/core/routes.php +++ b/core/routes.php @@ -32,6 +32,9 @@ $this->create('core_ajax_vcategories_favorites', '/core/ajax/vcategories/favorit ->actionInclude('core/ajax/vcategories/favorites.php'); $this->create('core_ajax_vcategories_edit', '/core/ajax/vcategories/edit.php') ->actionInclude('core/ajax/vcategories/edit.php'); +// oC JS config +$this->create('js_config', '/core/js/config.js') + ->actionInclude('core/js/config.php'); // Routing $this->create('core_ajax_routes', '/core/routes.json') ->action('OC_Router', 'JSRoutes'); diff --git a/core/templates/layout.base.php b/core/templates/layout.base.php index cb2f9773839..47fb75612cf 100644 --- a/core/templates/layout.base.php +++ b/core/templates/layout.base.php @@ -7,11 +7,7 @@ <?php foreach ($_['cssfiles'] as $cssfile): ?> <link rel="stylesheet" href="<?php echo $cssfile; ?>" type="text/css" media="screen" /> <?php endforeach; ?> - <script type="text/javascript"> - var oc_debug = <?php echo (defined('DEBUG') && DEBUG) ? 'true' : 'false'; ?>; - var oc_webroot = '<?php echo OC::$WEBROOT; ?>'; - var oc_requesttoken = '<?php echo $_['requesttoken']; ?>'; - </script> + <script type="text/javascript" src="<?php echo OC_Helper::linkToRoute('js_config');?>"></script> <?php foreach ($_['jsfiles'] as $jsfile): ?> <script type="text/javascript" src="<?php echo $jsfile; ?>"></script> <?php endforeach; ?> diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php index 5b39503474d..9aabc08acec 100644 --- a/core/templates/layout.guest.php +++ b/core/templates/layout.guest.php @@ -3,19 +3,12 @@ <head> <title>ownCloud</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <meta name="apple-itunes-app" content="app-id=543672169"> <link rel="shortcut icon" href="<?php echo image_path('', 'favicon.png'); ?>" /><link rel="apple-touch-icon-precomposed" href="<?php echo image_path('', 'favicon-touch.png'); ?>" /> <?php foreach($_['cssfiles'] as $cssfile): ?> <link rel="stylesheet" href="<?php echo $cssfile; ?>" type="text/css" media="screen" /> <?php endforeach; ?> - <script type="text/javascript"> - var oc_debug = <?php echo (defined('DEBUG') && DEBUG) ? 'true' : 'false'; ?>; - var oc_webroot = '<?php echo OC::$WEBROOT; ?>'; - var oc_requesttoken = '<?php echo $_['requesttoken']; ?>'; - var datepickerFormatDate = <?php echo json_encode($l->l('jsdate', 'jsdate')) ?>; - var dayNames = <?php echo json_encode(array((string)$l->t('Sunday'), (string)$l->t('Monday'), (string)$l->t('Tuesday'), (string)$l->t('Wednesday'), (string)$l->t('Thursday'), (string)$l->t('Friday'), (string)$l->t('Saturday'))) ?>; - var monthNames = <?php echo json_encode(array((string)$l->t('January'), (string)$l->t('February'), (string)$l->t('March'), (string)$l->t('April'), (string)$l->t('May'), (string)$l->t('June'), (string)$l->t('July'), (string)$l->t('August'), (string)$l->t('September'), (string)$l->t('October'), (string)$l->t('November'), (string)$l->t('December'))) ?>; - var firstDay = <?php echo json_encode($l->l('firstday', 'firstday')) ?>; - </script> + <script type="text/javascript" src="<?php echo OC_Helper::linkToRoute('js_config');?>"></script> <?php foreach($_['jsfiles'] as $jsfile): ?> <script type="text/javascript" src="<?php echo $jsfile; ?>"></script> <?php endforeach; ?> diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index a16d2c9e55d..2886c3c5a2e 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -1,33 +1,17 @@ <!DOCTYPE html> <html> <head> - <title><?php echo isset($_['application']) && !empty($_['application'])?$_['application'].' | ':'' ?>ownCloud <?php echo OC_User::getUser()?' ('.OC_User::getUser().') ':'' ?></title> + <title><?php echo isset($_['application']) && !empty($_['application'])?$_['application'].' | ':'' ?>ownCloud <?php echo OC_User::getDisplayName()?' ('.OC_Util::sanitizeHTML(OC_User::getDisplayName()).') ':'' ?></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <meta name="apple-itunes-app" content="app-id=543672169"> <link rel="shortcut icon" href="<?php echo image_path('', 'favicon.png'); ?>" /><link rel="apple-touch-icon-precomposed" href="<?php echo image_path('', 'favicon-touch.png'); ?>" /> <?php foreach($_['cssfiles'] as $cssfile): ?> <link rel="stylesheet" href="<?php echo $cssfile; ?>" type="text/css" media="screen" /> <?php endforeach; ?> - <script type="text/javascript"> - var oc_debug = <?php echo (defined('DEBUG') && DEBUG) ? 'true' : 'false'; ?>; - var oc_webroot = '<?php echo OC::$WEBROOT; ?>'; - var oc_appswebroots = <?php echo $_['apps_paths'] ?>; - var oc_current_user = '<?php echo OC_User::getUser() ?>'; - var oc_requesttoken = '<?php echo $_['requesttoken']; ?>'; - var datepickerFormatDate = <?php echo json_encode($l->l('jsdate', 'jsdate')) ?>; - var dayNames = <?php echo json_encode(array((string)$l->t('Sunday'), (string)$l->t('Monday'), (string)$l->t('Tuesday'), (string)$l->t('Wednesday'), (string)$l->t('Thursday'), (string)$l->t('Friday'), (string)$l->t('Saturday'))) ?>; - var monthNames = <?php echo json_encode(array((string)$l->t('January'), (string)$l->t('February'), (string)$l->t('March'), (string)$l->t('April'), (string)$l->t('May'), (string)$l->t('June'), (string)$l->t('July'), (string)$l->t('August'), (string)$l->t('September'), (string)$l->t('October'), (string)$l->t('November'), (string)$l->t('December'))) ?>; - var firstDay = <?php echo json_encode($l->l('firstday', 'firstday')) ?>; - </script> + <script type="text/javascript" src="<?php echo OC_Helper::linkToRoute('js_config');?>"></script> <?php foreach($_['jsfiles'] as $jsfile): ?> <script type="text/javascript" src="<?php echo $jsfile; ?>"></script> <?php endforeach; ?> - <script type="text/javascript"> - requesttoken = '<?php echo $_['requesttoken']; ?>'; - OC.EventSource.requesttoken=requesttoken; - $(document).bind('ajaxSend', function(elm, xhr, s) { - xhr.setRequestHeader('requesttoken', requesttoken); - }); - </script> <?php foreach($_['headers'] as $header): ?> <?php echo '<'.$header['tag'].' '; @@ -40,7 +24,10 @@ </head> <body id="<?php echo $_['bodyid'];?>"> - <header><div id="header"> + <div id="notification-container"> + <div id="notification"></div> + </div> + <header><div id="header"> <a href="<?php echo link_to('', 'index.php'); ?>" title="" id="owncloud"><img class="svg" src="<?php echo image_path('', 'logo-wide.svg'); ?>" alt="ownCloud" /></a> <a class="header-right header-action" id="logout" href="<?php echo link_to('', 'index.php'); ?>?logout=true"><img class="svg" alt="<?php echo $l->t('Log out');?>" title="<?php echo $l->t('Log out'); echo OC_User::getUser()?' ('.OC_User::getUser().') ':'' ?>" src="<?php echo image_path('', 'actions/logout.svg'); ?>" /></a> <form class="searchbox header-right" action="#" method="post"> diff --git a/core/templates/login.php b/core/templates/login.php index 43e45997803..c82d2cafa2e 100644 --- a/core/templates/login.php +++ b/core/templates/login.php @@ -41,10 +41,5 @@ <input type="submit" id="submit" class="login primary" value="<?php echo $l->t('Log in'); ?>"/> </fieldset> </form> -<script> - $(document).ready(function () { - var visitortimezone = (-new Date().getTimezoneOffset() / 60); - $('#timezone-offset').val(visitortimezone); - }); +<?php OCP\Util::addscript('core', 'visitortimezone'); ?> -</script> diff --git a/core/templates/update.php b/core/templates/update.php index c9f3144f257..ae714dcfb92 100644 --- a/core/templates/update.php +++ b/core/templates/update.php @@ -3,29 +3,3 @@ <?php echo $l->t('Updating ownCloud to version %s, this may take a while.', array($_['version'])); ?><br /><br /> </li> </ul> -<script> - $(document).ready(function () { - OC.EventSource.requesttoken = oc_requesttoken; - var updateEventSource = new OC.EventSource(OC.webroot+'/core/ajax/update.php'); - updateEventSource.listen('success', function(message) { - $('<span>').append(message).append('<br />').appendTo($('.update')); - }); - updateEventSource.listen('error', function(message) { - $('<span>').addClass('error').append(message).append('<br />').appendTo($('.update')); - }); - updateEventSource.listen('failure', function(message) { - $('<span>').addClass('error').append(message).append('<br />').appendTo($('.update')); - $('<span>') - .addClass('error bold') - .append('<br />') - .append(t('core', 'The update was unsuccessful. Please report this issue to the <a href="https://github.com/owncloud/core/issues" target="_blank">ownCloud community</a>.')) - .appendTo($('.update')); - }); - updateEventSource.listen('done', function(message) { - $('<span>').addClass('bold').append('<br />').append(t('core', 'The update was successful. Redirecting you to ownCloud now.')).appendTo($('.update')); - setTimeout(function () { - window.location.href = OC.webroot; - }, 3000); - }); - }); -</script>
\ No newline at end of file diff --git a/db_structure.xml b/db_structure.xml index db43ef21140..f4111bfabd0 100644 --- a/db_structure.xml +++ b/db_structure.xml @@ -60,125 +60,186 @@ <table> - <name>*dbprefix*fscache</name> + <name>*dbprefix*storages</name> <declaration> <field> <name>id</name> - <autoincrement>1</autoincrement> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>64</length> + </field> + + <field> + <name>numeric_id</name> <type>integer</type> <default>0</default> <notnull>true</notnull> + <autoincrement>1</autoincrement> <length>4</length> </field> + <index> + <name>storages_id_index</name> + <unique>true</unique> + <field> + <name>id</name> + <sorting>ascending</sorting> + </field> + </index> + + </declaration> + + </table> + + <table> + + <name>*dbprefix*mimetypes</name> + + <declaration> + <field> - <name>path</name> - <type>text</type> - <default></default> + <name>id</name> + <type>integer</type> + <default>0</default> <notnull>true</notnull> - <length>512</length> + <autoincrement>1</autoincrement> + <length>4</length> </field> <field> - <name>path_hash</name> + <name>mimetype</name> <type>text</type> <default></default> <notnull>true</notnull> - <length>32</length> + <length>255</length> </field> + <index> + <name>mimetype_id_index</name> + <unique>true</unique> + <field> + <name>mimetype</name> + <sorting>ascending</sorting> + </field> + </index> + + </declaration> + + </table> + + <table> + + <name>*dbprefix*filecache</name> + + <declaration> + <field> - <name>parent</name> + <name>fileid</name> <type>integer</type> <default>0</default> <notnull>true</notnull> - <length>8</length> + <autoincrement>1</autoincrement> + <length>4</length> </field> <field> - <name>name</name> - <type>text</type> + <name>storage</name> + <type>integer</type> <default></default> <notnull>true</notnull> - <length>300</length> + <length>4</length> </field> <field> - <name>user</name> + <name>path</name> <type>text</type> <default></default> <notnull>true</notnull> - <length>64</length> + <length>512</length> </field> <field> - <name>size</name> - <type>integer</type> - <default>0</default> + <name>path_hash</name> + <type>text</type> + <default></default> <notnull>true</notnull> - <length>8</length> + <length>32</length> </field> <field> - <name>ctime</name> + <name>parent</name> <type>integer</type> - <default>0</default> + <default></default> <notnull>true</notnull> - <length>8</length> + <length>4</length> </field> <field> - <name>mtime</name> - <type>integer</type> - <default>0</default> + <name>name</name> + <type>text</type> + <default></default> <notnull>true</notnull> - <length>8</length> + <length>250</length> </field> <field> <name>mimetype</name> - <type>text</type> + <type>integer</type> <default></default> <notnull>true</notnull> - <length>96</length> + <length>4</length> </field> <field> <name>mimepart</name> - <type>text</type> + <type>integer</type> <default></default> <notnull>true</notnull> - <length>32</length> + <length>4</length> </field> <field> - <name>encrypted</name> + <name>size</name> <type>integer</type> - <default>0</default> + <default></default> <notnull>true</notnull> - <length>1</length> + <length>4</length> </field> <field> - <name>versioned</name> + <name>mtime</name> <type>integer</type> - <default>0</default> + <default></default> <notnull>true</notnull> - <length>1</length> + <length>4</length> </field> <field> - <name>writable</name> + <name>encrypted</name> <type>integer</type> <default>0</default> <notnull>true</notnull> - <length>1</length> + <length>4</length> + </field> + + <field> + <name>etag</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>40</length> </field> <index> - <name>fscache_path_hash_index</name> + <name>fs_storage_path_hash</name> + <unique>true</unique> + <field> + <name>storage</name> + <sorting>ascending</sorting> + </field> <field> <name>path_hash</name> <sorting>ascending</sorting> @@ -186,29 +247,84 @@ </index> <index> - <name>parent_index</name> + <name>fs_parent_name_hash</name> <field> <name>parent</name> <sorting>ascending</sorting> </field> + <field> + <name>name</name> + <sorting>ascending</sorting> + </field> </index> <index> - <name>name_index</name> + <name>fs_storage_mimetype</name> <field> - <name>name</name> + <name>storage</name> + <sorting>ascending</sorting> + </field> + <field> + <name>mimetype</name> <sorting>ascending</sorting> </field> </index> <index> - <name>parent_name_index</name> + <name>fs_storage_mimepart</name> <field> - <name>parent</name> + <name>storage</name> <sorting>ascending</sorting> </field> <field> - <name>name</name> + <name>mimepart</name> + <sorting>ascending</sorting> + </field> + </index> + + </declaration> + + </table> + + <table> + + <name>*dbprefix*permissions</name> + + <declaration> + + <field> + <name>fileid</name> + <type>integer</type> + <default>0</default> + <notnull>true</notnull> + <length>4</length> + </field> + + <field> + <name>user</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>64</length> + </field> + + <field> + <name>permissions</name> + <type>integer</type> + <default>0</default> + <notnull>true</notnull> + <length>4</length> + </field> + + <index> + <name>id_user_index</name> + <unique>true</unique> + <field> + <name>fileid</name> + <sorting>ascending</sorting> + </field> + <field> + <name>user</name> <sorting>ascending</sorting> </field> </index> @@ -680,6 +796,14 @@ </field> <field> + <name>displayname</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>64</length> + </field> + + <field> <name>password</name> <type>text</type> <default></default> diff --git a/l10n/.tx/config b/l10n/.tx/config index 2aac0feedc5..b6589d8112d 100644 --- a/l10n/.tx/config +++ b/l10n/.tx/config @@ -40,6 +40,12 @@ source_file = templates/files_sharing.pot source_lang = en type = PO +[owncloud.files_trashbin] +file_filter = <lang>/files_trashbin.po +source_file = templates/files_trashbin.pot +source_lang = en +type = PO + [owncloud.files_versions] file_filter = <lang>/files_versions.po source_file = templates/files_versions.pot diff --git a/l10n/ar/core.po b/l10n/ar/core.po index c1497f76a41..f5850c1adf2 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -19,24 +19,24 @@ 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/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -81,59 +81,135 @@ msgstr "لم يتم اختيار ÙØ¦Ø© Ù„Ù„ØØ°Ù" msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "تعديلات" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "منذ ثواني" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "منذ دقيقة" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} منذ دقائق" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "اليوم" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "" @@ -163,8 +239,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "خطأ" @@ -176,122 +252,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "ØØµÙ„ خطأ عند عملية إزالة المشاركة" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "ØØµÙ„ خطأ عند عملية إعادة تعيين Ø§Ù„ØªØµØ±ÙŠØ Ø¨Ø§Ù„ØªÙˆØµÙ„" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "شورك معك ومع المجموعة {group} من قبل {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "شورك معك من قبل {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "شارك مع" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "شارك مع رابط" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "ØÙ…اية كلمة السر" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "كلمة السر" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "تعيين تاريخ إنتهاء الصلاØÙŠØ©" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "تاريخ إنتهاء الصلاØÙŠØ©" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "مشاركة عبر البريد الإلكتروني:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "لم يتم العثور على أي شخص" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "لا ÙŠØ³Ù…Ø Ø¨Ø¹Ù…Ù„ÙŠØ© إعادة المشاركة" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "شورك ÙÙŠ {item} مع {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "إلغاء مشاركة" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "Ø§Ù„ØªØØ±ÙŠØ± مسموØ" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "ضبط الوصول" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "إنشاء" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "ØªØØ¯ÙŠØ«" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "ØØ°Ù" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "مشاركة" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Ù…ØÙ…ÙŠ بكلمة السر" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "ØØµÙ„ خطأ عند عملية إزالة تاريخ إنتهاء الصلاØÙŠØ©" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "ØØµÙ„ خطأ عند عملية تعيين تاريخ إنتهاء الصلاØÙŠØ©" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "إعادة تعيين كلمة سر ownCloud" @@ -443,87 +538,11 @@ msgstr "خادم قاعدة البيانات" msgid "Finish setup" msgstr "انهاء التعديلات" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Ø§Ù„Ø§ØØ¯" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "الأثنين" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "الثلاثاء" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "الاربعاء" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "الخميس" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "الجمعه" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "السبت" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "كانون الثاني" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "شباط" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "آذار" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "نيسان" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "أيار" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "ØØ²ÙŠØ±Ø§Ù†" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "تموز" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "آب" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "أيلول" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "تشرين الاول" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "تشرين الثاني" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "كانون الاول" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "خدمات الوب ØªØØª تصرÙÙƒ" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "الخروج" diff --git a/l10n/ar/files.po b/l10n/ar/files.po index 121094a24f7..eaf6d1705c9 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -18,65 +18,46 @@ 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:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Ø¥Ø±ÙØ¹" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "تم ترÙيع Ø§Ù„Ù…Ù„ÙØ§Øª بنجاØ." -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "ØØ¬Ù… المل٠الذي تريد ترÙيعه أعلى مما MAX_FILE_SIZE ÙŠØ³Ù…Ø Ø¨Ù‡ ÙÙŠ واجهة ال HTML." -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "تم ترÙيع جزء من Ø§Ù„Ù…Ù„ÙØ§Øª الذي تريد ترÙيعها Ùقط" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "لم يتم ترÙيع أي من Ø§Ù„Ù…Ù„ÙØ§Øª" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "المجلد المؤقت غير موجود" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -84,151 +65,151 @@ msgstr "" msgid "Files" msgstr "Ø§Ù„Ù…Ù„ÙØ§Øª" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "إلغاء مشاركة" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Ù…ØØ°ÙˆÙ" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "إغلق" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "الاسم" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "ØØ¬Ù…" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "معدل" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Ø¥Ø±ÙØ¹" + #: templates/admin.php:5 msgid "File handling" msgstr "" @@ -277,32 +258,40 @@ msgstr "مجلد" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "لا يوجد شيء هنا. Ø¥Ø±ÙØ¹ بعض Ø§Ù„Ù…Ù„ÙØ§Øª!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "تØÙ…يل" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "ØØ¬Ù… الترÙيع أعلى من المسموØ" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/ar/files_trashbin.po b/l10n/ar/files_trashbin.po new file mode 100644 index 00000000000..ee7ad818289 --- /dev/null +++ b/l10n/ar/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"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/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/ar/settings.po b/l10n/ar/settings.po index 1da68062efd..0b638eea207 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -90,7 +90,7 @@ msgstr "ØªÙØ¹ÙŠÙ„" msgid "Saving..." msgstr "ØÙظ" -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__language_name__" @@ -102,15 +102,15 @@ msgstr "أض٠تطبيقاتك" msgid "More Apps" msgstr "المزيد من التطبيقات" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "إختر تطبيقاً" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "راجع ØµÙØØ© التطبيق على apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-ترخيص من قبل <span class=\"author\"></span>" @@ -159,7 +159,7 @@ msgstr "تØÙ…يل عميل آندرويد" msgid "Download iOS Client" msgstr "تØÙ…يل عميل آي أو أس" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "كلمات السر" @@ -229,11 +229,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "طوّر من قبل <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud مجتمع</a>, الـ <a href=\"https://github.com/owncloud\" target=\"_blank\">النص المصدري</a> مرخص بموجب <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">رخصة Ø£Ùيرو العمومية</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "الاسم" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "مجموعات" @@ -245,26 +245,38 @@ msgstr "انشئ" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "شيء آخر" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "مدير المجموعة" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "ØØ°Ù" diff --git a/l10n/bg_BG/core.po b/l10n/bg_BG/core.po index a4addcd1355..9a35782ee7e 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -21,24 +21,24 @@ msgstr "" "Language: bg_BG\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -83,59 +83,135 @@ msgstr "" msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "ÐаÑтройки" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "преди Ñекунди" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "преди 1 минута" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "преди 1 чаÑ" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "днеÑ" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "вчера" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "поÑледниÑÑ‚ меÑец" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "поÑледната година" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "поÑледните години" @@ -165,10 +241,10 @@ 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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" -msgstr "" +msgstr "Грешка" #: js/oc-vcategories.js:179 msgid "The app name is not specified." @@ -178,122 +254,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Парола" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "" @@ -445,87 +540,11 @@ msgstr "" msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "уеб уÑлуги под Ваш контрол" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "" diff --git a/l10n/bg_BG/files.po b/l10n/bg_BG/files.po index 9907862b6a1..f64a199c152 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -19,65 +19,46 @@ msgstr "" "Language: bg_BG\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Качване" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "ЛипÑва временна папка" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -85,151 +66,151 @@ msgstr "" msgid "Files" msgstr "Файлове" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Изтриване" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Преименуване" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "препокриване" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "отказ" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "възтановÑване" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Качването е ÑпрÑно." -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Име" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Размер" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Променено" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Качване" + #: templates/admin.php:5 msgid "File handling" msgstr "" @@ -278,32 +259,40 @@ msgstr "Папка" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "ÐÑма нищо тук. Качете нещо." -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "ИзтеглÑне" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Файлът който Ñте избрали за качване е прекалено голÑм" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/bg_BG/files_trashbin.po b/l10n/bg_BG/files_trashbin.po new file mode 100644 index 00000000000..e0e23f5d093 --- /dev/null +++ b/l10n/bg_BG/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg_BG\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/bg_BG/settings.po b/l10n/bg_BG/settings.po index 4275c1ee1b3..3ed0f6d3fd0 100644 --- a/l10n/bg_BG/settings.po +++ b/l10n/bg_BG/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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 18:49+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -90,7 +90,7 @@ msgstr "Включено" msgid "Saving..." msgstr "" -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "" @@ -102,15 +102,15 @@ msgstr "" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -159,7 +159,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Парола" @@ -229,11 +229,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Име" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Групи" @@ -245,26 +245,38 @@ msgstr "" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Изтриване" diff --git a/l10n/bn_BD/core.po b/l10n/bn_BD/core.po index 8c24eb72e22..6c25c59499a 100644 --- a/l10n/bn_BD/core.po +++ b/l10n/bn_BD/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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -18,24 +18,24 @@ msgstr "" "Language: bn_BD\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "%s নামের বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•ারি আপনার সাথে à¦à¦•টা ফাইল à¦à¦¾à¦—াà¦à¦¾à¦—ি করেছেন" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "%s নামের বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•ারি আপনার সাথে à¦à¦•টা ফোলà§à¦¡à¦¾à¦° à¦à¦¾à¦—াà¦à¦¾à¦—ি করেছেন" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "%s নামের বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•ারী \"%s\" ফাইলটি আপনার সাথে à¦à¦¾à¦—াà¦à¦¾à¦—ি করেছেন। à¦à¦Ÿà¦¿ à¦à¦–ন à¦à¦–ানে ডাউনলোড করার জনà§à¦¯ সà§à¦²à¦à¦ƒ %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -80,59 +80,135 @@ msgstr "মà§à¦›à§‡ ফেলার জনà§à¦¯ কোন কà§à¦¯à¦¾à¦Ÿà§‡à¦ msgid "Error removing %s from favorites." msgstr "পà§à¦°à¦¿à§Ÿ থেকে %s সরিয়ে ফেলতে সমসà§à¦¯à¦¾ দেখা দিয়েছে।" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "নিয়ামকসমূহ" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "সেকেনà§à¦¡ পূরà§à¦¬à§‡" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 মিনিট পূরà§à¦¬à§‡" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} মিনিট পূরà§à¦¬à§‡" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 ঘনà§à¦Ÿà¦¾ পূরà§à¦¬à§‡" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} ঘনà§à¦Ÿà¦¾ পূরà§à¦¬à§‡" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "আজ" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "গতকাল" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} দিন পূরà§à¦¬à§‡" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "গতমাস" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} মাস পূরà§à¦¬à§‡" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "মাস পূরà§à¦¬à§‡" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "গত বছর" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "বছর পূরà§à¦¬à§‡" @@ -162,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "সমসà§à¦¯à¦¾" @@ -175,122 +251,141 @@ msgstr "অà§à¦¯à¦¾à¦ªà§‡à¦° নামটি সà§à¦¨à¦¿à¦°à§à¦¦à¦¿à¦·à§à¦Ÿ msgid "The required file {file} is not installed!" msgstr "আবশà§à¦¯à¦¿à¦• {file} টি সংসà§à¦¥à¦¾à¦ªà¦¿à¦¤ নেই !" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "à¦à¦¾à¦—াà¦à¦¾à¦—ি বাতিল করতে সমসà§à¦¯à¦¾ দেখা দিয়েছে" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "অনà§à¦®à¦¤à¦¿à¦¸à¦®à§‚হ পরিবরà§à¦¤à¦¨ করতে সমসà§à¦¯à¦¾ দেখা দিয়েছে" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "{owner} আপনার à¦à¦¬à¦‚ {group} গোষà§à¦ ীর সাথে à¦à¦¾à¦—াà¦à¦¾à¦—ি করেছেন" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "{owner} আপনার সাথে à¦à¦¾à¦—াà¦à¦¾à¦—ি করেছেন" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "যাদের সাথে à¦à¦¾à¦—াà¦à¦¾à¦—ি করা হয়েছে" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "লিংকের সাথে à¦à¦¾à¦—াà¦à¦¾à¦—ি কর" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "কূটশবà§à¦¦ সà§à¦°à¦•à§à¦·à¦¿à¦¤" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "কূটশবà§à¦¦" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "বà§à¦¯à¦•à§à¦¤à¦¿à¦° সাথে ই-মেইল যà§à¦•à§à¦¤ কর" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "পাঠাও" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "মেয়াদোতà§à¦¤à§€à¦°à§à¦£ হওয়ার তারিখ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "মেয়াদোতà§à¦¤à§€à¦°à§à¦£ হওয়ার তারিখ" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "ই-মেইলের মাধà§à¦¯à¦®à§‡ à¦à¦¾à¦—াà¦à¦¾à¦—ি করà§à¦¨à¦ƒ" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "কোন বà§à¦¯à¦•à§à¦¤à¦¿ খà§à¦à¦œà§‡ পাওয়া গেল না" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "পূনঃরায় à¦à¦¾à¦—াà¦à¦¾à¦—ি অনà§à¦®à§‹à¦¦à¦¿à¦¤ নয়" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "{user} à¦à¦° সাথে {item} à¦à¦¾à¦—াà¦à¦¾à¦—ি করা হয়েছে" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "à¦à¦¾à¦—াà¦à¦¾à¦—ি বাতিল কর" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করতে পারবেন" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "অধিগমà§à¦¯à¦¤à¦¾ নিয়নà§à¦¤à§à¦°à¦£" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "তৈরী করà§à¦¨" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "পরিবরà§à¦§à¦¨ কর" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "মà§à¦›à§‡ ফেল" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "à¦à¦¾à¦—াà¦à¦¾à¦—ি কর" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "কূটশবà§à¦¦à¦¦à§à¦¬à¦¾à¦°à¦¾ সà§à¦°à¦•à§à¦·à¦¿à¦¤" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "মেয়াদোতà§à¦¤à§€à¦°à§à¦£ হওয়ার তারিখ নিরà§à¦§à¦¾à¦°à¦£ বাতিল করতে সমসà§à¦¯à¦¾ দেখা দিয়েছে" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "মেয়াদোতà§à¦¤à§€à¦°à§à¦£ হওয়ার তারিখ নিরà§à¦§à¦¾à¦°à¦£ করতে সমসà§à¦¯à¦¾ দেখা দিয়েছে" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "পাঠানো হচà§à¦›à§‡......" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "ই-মেইল পাঠানো হয়েছে" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ownCloud কূটশবà§à¦¦ পূনঃনিরà§à¦§à¦¾à¦°à¦£" @@ -442,87 +537,11 @@ msgstr "ডাটাবেজ হোসà§à¦Ÿ" msgid "Finish setup" msgstr "সেটআপ সà§à¦¸à¦®à§à¦ªà¦¨à§à¦¨ কর" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "রবিবার" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "সোমবার" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "মঙà§à¦—লবার" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "বà§à¦§à¦¬à¦¾à¦°" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "বৃহষà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "শà§à¦•à§à¦°à¦¬à¦¾à¦°" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "শনিবার" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "জানà§à§Ÿà¦¾à¦°à¦¿" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "মারà§à¦š" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "à¦à¦ªà§à¦°à¦¿à¦²" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "মে" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "জà§à¦¨" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "জà§à¦²à¦¾à¦‡" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "অগাষà§à¦Ÿ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "অকà§à¦Ÿà§‹à¦¬à¦°" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "নà¦à§‡à¦®à§à¦¬à¦°" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "ডিসেমà§à¦¬à¦°" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "ওয়েব সারà§à¦à¦¿à¦¸à§‡à¦° নিয়নà§à¦¤à§à¦°à¦£ আপনার হাতের মà§à¦ à§‹à§Ÿ" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "পà§à¦°à¦¸à§à¦¥à¦¾à¦¨" diff --git a/l10n/bn_BD/files.po b/l10n/bn_BD/files.po index ad10526f601..a7f37ff99c2 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -18,65 +18,46 @@ msgstr "" "Language: bn_BD\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "আপলোড" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "%s কে সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করা সমà§à¦à¦¬ হলো না - à¦à¦‡ নামের ফাইল বিদà§à¦¯à¦®à¦¾à¦¨" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "%s কে সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করা সমà§à¦à¦¬ হলো না" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "ফাইলের নাম পরিবরà§à¦¤à¦¨ করা সমà§à¦à¦¬ হলো না" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "কোন ফাইল আপলোড করা হয় নি। সমসà§à¦¯à¦¾ অজà§à¦žà¦¾à¦¤à¥¤" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "কোন সমসà§à¦¯à¦¾ নেই, ফাইল আপলোড সà§à¦¸à¦®à§à¦ªà¦¨à§à¦¨ হয়েছে" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "আপলোড করা ফাইলটি php.ini তে বরà§à¦£à¦¿à¦¤ upload_max_filesize নিরà§à¦¦à§‡à¦¶à¦¿à¦¤ আয়তন অতিকà§à¦°à¦® করছেঃ" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "আপলোড করা ফাইলটি HTML ফরà§à¦®à§‡ নিরà§à¦§à¦¾à¦°à¦¿à¦¤ MAX_FILE_SIZE নিরà§à¦¦à§‡à¦¶à¦¿à¦¤ সরà§à¦¬à§‹à¦šà§à¦š আকার অতিকà§à¦°à¦® করেছে " -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "আপলোড করা ফাইলটি আংশিক আপলোড করা হয়েছে" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "কোন ফাইল আপলোড করা হয় নি" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "অসà§à¦¥à¦¾à§Ÿà§€ ফোলà§à¦¡à¦¾à¦° খোয়া গিয়েছে" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "ডিসà§à¦•ে লিখতে বà§à¦¯à¦°à§à¦¥" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "যথেষà§à¦ পরিমাণ সà§à¦¥à¦¾à¦¨ নেই" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "à¦à§à¦² ডিরেকà§à¦Ÿà¦°à¦¿" @@ -84,151 +65,151 @@ msgstr "à¦à§à¦² ডিরেকà§à¦Ÿà¦°à¦¿" msgid "Files" msgstr "ফাইল" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "à¦à¦¾à¦—াà¦à¦¾à¦—ি বাতিল " -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "মà§à¦›à§‡ ফেল" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "পূনঃনামকরণ" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} টি বিদà§à¦¯à¦®à¦¾à¦¨" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "নাম সà§à¦ªà¦¾à¦°à¦¿à¦¶ করà§à¦¨" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "বাতিল" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "{new_name} পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করা হয়েছে" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "কà§à¦°à¦¿à§Ÿà¦¾ পà§à¦°à¦¤à§à¦¯à¦¾à¦¹à¦¾à¦°" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} কে {old_name} নামে পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করা হয়েছে" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "{files} à¦à¦¾à¦—াà¦à¦¾à¦—ি বাতিল কর" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "{files} মà§à¦›à§‡ ফেলা হয়েছে" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "টি à¦à¦•টি অননà§à¦®à§‹à¦¦à¦¿à¦¤ নাম।" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "ফাইলের নামটি ফাà¦à¦•া রাখা যাবে না।" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "নামটি সঠিক নয়, '\\', '/', '<', '>', ':', '\"', '|', '?' à¦à¦¬à¦‚ '*' অনà§à¦®à§‹à¦¦à¦¿à¦¤ নয়।" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "আপনার ফাইলটি আপলোড করা সমà§à¦à¦¬ হলো না, কেননা à¦à¦Ÿà¦¿ হয় à¦à¦•টি ফোলà§à¦¡à¦¾à¦° কিংবা à¦à¦° আকার ০ বাইট" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "আপলোড করতে সমসà§à¦¯à¦¾ " -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "বনà§à¦§" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "মà§à¦²à¦¤à§à¦¬à¦¿" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "১টি ফাইল আপলোড করা হচà§à¦›à§‡" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} টি ফাইল আপলোড করা হচà§à¦›à§‡" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "আপলোড বাতিল করা হয়েছে।" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "ফাইল আপলোড চলমান। à¦à¦‡ পৃষà§à¦ া পরিতà§à¦¯à¦¾à¦— করলে আপলোড বাতিল করা হবে।" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL ফাà¦à¦•া রাখা যাবে না।" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "ফোলà§à¦¡à¦¾à¦°à§‡à¦° নামটি সঠিক নয়। 'à¦à¦¾à¦—াà¦à¦¾à¦—ি করা' শà§à¦§à§à¦®à¦¾à¦¤à§à¦° Owncloud à¦à¦° জনà§à¦¯ সংরকà§à¦·à¦¿à¦¤à¥¤" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} টি ফাইল সà§à¦•à§à¦¯à¦¾à¦¨ করা হয়েছে" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "সà§à¦•à§à¦¯à¦¾à¦¨ করার সময় সমসà§à¦¯à¦¾ দেখা দিয়েছে" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "নাম" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "আকার" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "পরিবরà§à¦¤à¦¿à¦¤" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "১টি ফোলà§à¦¡à¦¾à¦°" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} টি ফোলà§à¦¡à¦¾à¦°" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "১টি ফাইল" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} টি ফাইল" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "আপলোড" + #: templates/admin.php:5 msgid "File handling" msgstr "ফাইল হà§à¦¯à¦¾à¦°à§à¦¡à¦²à¦¿à¦‚" @@ -277,32 +258,40 @@ msgstr "ফোলà§à¦¡à¦¾à¦°" msgid "From link" msgstr " লিংক থেকে" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "আপলোড বাতিল কর" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "à¦à¦–ানে কিছà§à¦‡ নেই। কিছৠআপলোড করà§à¦¨ !" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "ডাউনলোড" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "আপলোডের আকারটি অনেক বড়" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "ফাইলগà§à¦²à§‹ সà§à¦•à§à¦¯à¦¾à¦¨ করা হচà§à¦›à§‡, দয়া করে অপেকà§à¦·à¦¾ করà§à¦¨à¥¤" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "বরà§à¦¤à¦®à¦¾à¦¨ সà§à¦•à§à¦¯à¦¾à¦¨à¦¿à¦‚" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/bn_BD/files_trashbin.po b/l10n/bn_BD/files_trashbin.po new file mode 100644 index 00000000000..e6d5c91dcb5 --- /dev/null +++ b/l10n/bn_BD/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bn_BD\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/bn_BD/settings.po b/l10n/bn_BD/settings.po index 34c75b953eb..c9bf33feef5 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -88,7 +88,7 @@ msgstr "সকà§à¦°à¦¿à§Ÿ " msgid "Saving..." msgstr "সংরকà§à¦·à¦£ করা হচà§à¦›à§‡.." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__language_name__" @@ -100,15 +100,15 @@ msgstr "আপনার অà§à¦¯à¦¾à¦ªà¦Ÿà¦¿ যোগ করà§à¦¨" msgid "More Apps" msgstr "আরও অà§à¦¯à¦¾à¦ª" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "অà§à¦¯à¦¾à¦ª নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "apps.owncloud.com ঠঅà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েসন পৃষà§à¦ া দেখà§à¦¨" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-লাইসেনà§à¦¸à¦§à¦¾à¦°à§€ <span class=\"author\"></span>" @@ -157,7 +157,7 @@ msgstr "অà§à¦¯à¦¾à¦¨à§à¦¡à§à¦°à§Ÿà§‡à¦¡ কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿ ডাà msgid "Download iOS Client" msgstr "iOS কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿ ডাউনলোড করà§à¦¨" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "কূটশবà§à¦¦" @@ -227,11 +227,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "তৈলী করেছেন <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud সমà§à¦ªà§à¦°à¦¦à¦¾à§Ÿ</a>, যার <a href=\"https://github.com/owncloud\" target=\"_blank\"> উৎস কোডটি <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> à¦à¦° অধীনে লাইসেনà§à¦¸à¦•ৃত।" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "রাম" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "গোষà§à¦ ীসমূহ" @@ -243,26 +243,38 @@ msgstr "তৈরী কর" msgid "Default Storage" msgstr "পূরà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ সংরকà§à¦·à¦£à¦¾à¦—ার" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "অসীম" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "অনà§à¦¯à¦¾à¦¨à§à¦¯" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "গোষà§à¦ à§€ পà§à¦°à¦¶à¦¾à¦¸à¦•" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "সংরকà§à¦·à¦£à¦¾à¦—ার" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "মà§à¦›à§‡ ফেল" diff --git a/l10n/ca/core.po b/l10n/ca/core.po index a9940eccf88..6eea0f16d43 100644 --- a/l10n/ca/core.po +++ b/l10n/ca/core.po @@ -4,14 +4,15 @@ # # Translators: # <joan@montane.cat>, 2012. +# <rcalvoi@yahoo.com>, 2013. # <rcalvoi@yahoo.com>, 2011-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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" +"Last-Translator: rogerc <rcalvoi@yahoo.com>\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,24 +20,24 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "L'usuari %s ha compartit un fitxer amb vós" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "L'usuari %s ha compartit una carpeta amb vós" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "L'usuari %s ha compartit el fitxer \"%s\" amb vós. Està disponible per a la descà rrega a: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -81,59 +82,135 @@ msgstr "No hi ha categories per eliminar." msgid "Error removing %s from favorites." msgstr "Error en eliminar %s dels preferits." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Diumenge" + +#: js/config.php:32 +msgid "Monday" +msgstr "Dilluns" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Dimarts" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Dimecres" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Dijous" + +#: js/config.php:32 +msgid "Friday" +msgstr "Divendres" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Dissabte" + +#: js/config.php:33 +msgid "January" +msgstr "Gener" + +#: js/config.php:33 +msgid "February" +msgstr "Febrer" + +#: js/config.php:33 +msgid "March" +msgstr "Març" + +#: js/config.php:33 +msgid "April" +msgstr "Abril" + +#: js/config.php:33 +msgid "May" +msgstr "Maig" + +#: js/config.php:33 +msgid "June" +msgstr "Juny" + +#: js/config.php:33 +msgid "July" +msgstr "Juliol" + +#: js/config.php:33 +msgid "August" +msgstr "Agost" + +#: js/config.php:33 +msgid "September" +msgstr "Setembre" + +#: js/config.php:33 +msgid "October" +msgstr "Octubre" + +#: js/config.php:33 +msgid "November" +msgstr "Novembre" + +#: js/config.php:33 +msgid "December" +msgstr "Desembre" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Arranjament" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "segons enrere" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "fa 1 minut" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "fa {minutes} minuts" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "fa 1 hora" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "fa {hours} hores" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "avui" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "ahir" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "fa {days} dies" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "el mes passat" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "fa {months} mesos" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "mesos enrere" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "l'any passat" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "anys enrere" @@ -163,8 +240,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Error" @@ -176,122 +253,141 @@ msgstr "No s'ha especificat el nom de l'aplicació." msgid "The required file {file} is not installed!" msgstr "El fitxer requerit {file} no està instal·lat!" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Comparteix" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Shared" +msgstr "Compartit" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Error en compartir" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Error en deixar de compartir" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Error en canviar els permisos" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Compartit amb vos i amb el grup {group} per {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Compartit amb vos per {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Comparteix amb" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Comparteix amb enllaç" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Protegir amb contrasenya" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Contrasenya" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Enllaç per correu electrónic amb la persona" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Envia" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Estableix la data d'expiració" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Data d'expiració" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Comparteix per correu electrònic" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "No s'ha trobat ningú" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "No es permet compartir de nou" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Compartit en {item} amb {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Deixa de compartir" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "pot editar" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "control d'accés" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "crea" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "actualitza" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "elimina" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "comparteix" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Protegeix amb contrasenya" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Error en eliminar la data d'expiració" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Error en establir la data d'expiració" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Enviant..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "El correu electrónic s'ha enviat" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "L'actualització ha estat incorrecte. Comuniqueu aquest error a <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">la comunitat ownCloud</a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "L'actualització ha estat correcte. Ara sou redireccionat a ownCloud." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "estableix de nou la contrasenya Owncloud" @@ -443,87 +539,11 @@ msgstr "Ordinador central de la base de dades" msgid "Finish setup" msgstr "Acaba la configuració" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Diumenge" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Dilluns" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Dimarts" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Dimecres" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Dijous" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Divendres" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Dissabte" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Gener" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Febrer" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Març" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Abril" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Maig" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Juny" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Juliol" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Agost" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Setembre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Octubre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Novembre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Desembre" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "controleu els vostres serveis web" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Surt" diff --git a/l10n/ca/files.po b/l10n/ca/files.po index 68ecfef29bc..2f36e169c76 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-01-23 00:05+0100\n" -"PO-Revision-Date: 2013-01-21 08:39+0000\n" -"Last-Translator: rogerc <rcalvoi@yahoo.com>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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,65 +24,46 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Puja" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr " No s'ha pogut moure %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "No es pot canviar el nom del fitxer" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "No s'ha carregat cap fitxer. Error desconegut" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "El fitxer s'ha pujat correctament" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "L’arxiu que voleu carregar supera el mà xim definit en la directiva upload_max_filesize del php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "El fitxer de pujada excedeix la directiva MAX_FILE_SIZE especificada al formulari HTML" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "El fitxer només s'ha pujat parcialment" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "El fitxer no s'ha pujat" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "S'ha perdut un fitxer temporal" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Ha fallat en escriure al disc" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "No hi ha prou espai disponible" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Directori no và lid." @@ -90,151 +71,151 @@ msgstr "Directori no và lid." msgid "Files" msgstr "Fitxers" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Deixa de compartir" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Suprimeix" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Reanomena" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} ja existeix" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "substitueix" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "sugereix un nom" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "cancel·la" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "s'ha substituït {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "desfés" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "s'ha substituït {old_name} per {new_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "no compartits {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "eliminats {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' és un nom no và lid per un fitxer." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "El nom del fitxer no pot ser buit." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "El nóm no és và lid, '\\', '/', '<', '>', ':', '\"', '|', '?' i '*' no estan permesos." -#: js/files.js:204 +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "El vostre espai d'emmagatzemament és ple, els fitxers ja no es poden actualitzar o sincronitzar!" + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "El vostre espai d'emmagatzemament és gairebé ple ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "S'està preparant la baixada. Pot trigar una estona si els fitxers són grans." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "No es pot pujar el fitxer perquè és una carpeta o té 0 bytes" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Error en la pujada" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Tanca" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Pendents" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 fitxer pujant" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} fitxers en pujada" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "La pujada s'ha cancel·lat." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "La URL no pot ser buida" -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "{count} fitxers escannejats" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "error durant l'escaneig" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nom" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Mida" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Modificat" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 carpeta" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} carpetes" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 fitxer" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} fitxers" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Puja" + #: templates/admin.php:5 msgid "File handling" msgstr "Gestió de fitxers" @@ -283,32 +264,40 @@ msgstr "Carpeta" msgid "From link" msgstr "Des d'enllaç" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Cancel·la la pujada" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Res per aquÃ. Pugeu alguna cosa!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Baixa" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "La pujada és massa gran" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Els fitxers que esteu intentant pujar excedeixen la mida mà xima de pujada del servidor" -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "S'estan escanejant els fitxers, espereu" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Actualment escanejant" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "Actualitzant la memòria de cau del sistema de fitxers..." diff --git a/l10n/ca/files_encryption.po b/l10n/ca/files_encryption.po index e76e21e1e5b..78e847f6e1e 100644 --- a/l10n/ca/files_encryption.po +++ b/l10n/ca/files_encryption.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <rcalvoi@yahoo.com>, 2013. # <rcalvoi@yahoo.com>, 2012. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-26 00:09+0100\n" +"PO-Revision-Date: 2013-01-25 08:06+0000\n" +"Last-Translator: rogerc <rcalvoi@yahoo.com>\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" @@ -22,53 +23,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "s'ha commutat a l'encriptació per part del client" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +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 "" +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 "" +msgstr "No s'ha pogut canviar la contrasenya d'encriptació de fitxers per la d'accés" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Escolliu el mode d'encriptació:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Encriptació per part del client (més segura però fa impossible l'accés a les dades des de la interfÃcie web)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Encriptació per part del servidor (permet accedir als fitxers des de la interfÃcie web i des del client d'escriptori)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Cap (sense encriptació)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Important: quan seleccioneu un mode d'encriptació no hi ha manera de canviar-lo de nou" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "EspecÃfic per usuari (permet que l'usuari ho decideixi)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/ca/files_trashbin.po b/l10n/ca/files_trashbin.po new file mode 100644 index 00000000000..660728accb6 --- /dev/null +++ b/l10n/ca/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/ca/settings.po b/l10n/ca/settings.po index 4d6dc883603..18973896d84 100644 --- a/l10n/ca/settings.po +++ b/l10n/ca/settings.po @@ -7,14 +7,15 @@ # <joan@montane.cat>, 2012. # <josep_tomas@hotmail.com>, 2012. # Josep Tomà s <jtomas.binsoft@gmail.com>, 2012. +# <rcalvoi@yahoo.com>, 2013. # <rcalvoi@yahoo.com>, 2011-2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 08:30+0000\n" +"Last-Translator: rogerc <rcalvoi@yahoo.com>\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" @@ -92,7 +93,7 @@ msgstr "Activa" msgid "Saving..." msgstr "S'està desant..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Català " @@ -104,15 +105,15 @@ msgstr "Afegiu la vostra aplicació" msgid "More Apps" msgstr "Més aplicacions" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Seleccioneu una aplicació" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Mireu la pà gina d'aplicacions a apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-propietat de <span class=\"author\"></span>" @@ -161,7 +162,7 @@ msgstr " Baixa el client per Android" msgid "Download iOS Client" msgstr "Baixa el client per iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Contrasenya" @@ -231,11 +232,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Desenvolupat per la <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunitat ownCloud</a>, el <a href=\"https://github.com/owncloud\" target=\"_blank\">codi font</a> té llicència <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nom" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "Nom d'accés" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grups" @@ -247,26 +248,38 @@ msgstr "Crea" msgid "Default Storage" msgstr "Emmagatzemament per defecte" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Il·limitat" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Un altre" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "Nom a mostrar" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Grup Admin" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Emmagatzemament" -#: templates/users.php:133 +#: templates/users.php:97 +msgid "change display name" +msgstr "canvia el nom a mostrar" + +#: templates/users.php:101 +msgid "set new password" +msgstr "estableix nova contrasenya" + +#: templates/users.php:137 msgid "Default" msgstr "Per defecte" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Suprimeix" diff --git a/l10n/cs_CZ/core.po b/l10n/cs_CZ/core.po index 66b36315f8e..4d163818fd9 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" +"Last-Translator: Tomáš Chvátal <tomas.chvatal@gmail.com>\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" @@ -21,24 +21,24 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "Uživatel %s s vámi sdÃlà soubor" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "Uživatel %s s vámi sdÃlà složku" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "Uživatel %s s vámi sdÃlà soubor \"%s\". Můžete jej stáhnout zde: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -83,59 +83,135 @@ msgstr "Žádné kategorie nebyly vybrány ke smazánÃ." msgid "Error removing %s from favorites." msgstr "Chyba pÅ™i odebÃránà %s z oblÃbených." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "NedÄ›le" + +#: js/config.php:32 +msgid "Monday" +msgstr "PondÄ›lÃ" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Úterý" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "StÅ™eda" + +#: js/config.php:32 +msgid "Thursday" +msgstr "ÄŒtvrtek" + +#: js/config.php:32 +msgid "Friday" +msgstr "Pátek" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Sobota" + +#: js/config.php:33 +msgid "January" +msgstr "Leden" + +#: js/config.php:33 +msgid "February" +msgstr "Únor" + +#: js/config.php:33 +msgid "March" +msgstr "BÅ™ezen" + +#: js/config.php:33 +msgid "April" +msgstr "Duben" + +#: js/config.php:33 +msgid "May" +msgstr "KvÄ›ten" + +#: js/config.php:33 +msgid "June" +msgstr "ÄŒerven" + +#: js/config.php:33 +msgid "July" +msgstr "ÄŒervenec" + +#: js/config.php:33 +msgid "August" +msgstr "Srpen" + +#: js/config.php:33 +msgid "September" +msgstr "ZářÃ" + +#: js/config.php:33 +msgid "October" +msgstr "ŘÃjen" + +#: js/config.php:33 +msgid "November" +msgstr "Listopad" + +#: js/config.php:33 +msgid "December" +msgstr "Prosinec" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "NastavenÃ" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "pÅ™ed pár vteÅ™inami" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "pÅ™ed minutou" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "pÅ™ed {minutes} minutami" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "pÅ™ed hodinou" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "pÅ™ed {hours} hodinami" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "dnes" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "vÄera" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "pÅ™ed {days} dny" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "minulý mesÃc" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "pÅ™ed {months} mÄ›sÃci" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "pÅ™ed mÄ›sÃci" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "minulý rok" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "pÅ™ed lety" @@ -165,8 +241,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Chyba" @@ -178,122 +254,141 @@ msgstr "Nenà urÄen název aplikace." msgid "The required file {file} is not installed!" msgstr "Požadovaný soubor {file} nenà nainstalován." -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "SdÃlet" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Shared" +msgstr "SdÃlené" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Chyba pÅ™i sdÃlenÃ" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Chyba pÅ™i ruÅ¡enà sdÃlenÃ" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Chyba pÅ™i zmÄ›nÄ› oprávnÄ›nÃ" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "S Vámi a skupinou {group} sdÃlà {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "S Vámi sdÃlà {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "SdÃlet s" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "SdÃlet s odkazem" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Chránit heslem" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Heslo" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Odeslat osobÄ› odkaz e-mailem" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Odeslat" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Nastavit datum vyprÅ¡enà platnosti" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Datum vyprÅ¡enà platnosti" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "SdÃlet e-mailem:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Žádnà lidé nenalezeni" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "SdÃlenà již sdÃlené položky nenà povoleno" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "SdÃleno v {item} s {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "ZruÅ¡it sdÃlenÃ" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "lze upravovat" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "Å™Ãzenà pÅ™Ãstupu" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "vytvoÅ™it" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "aktualizovat" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "smazat" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "sdÃlet" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "ChránÄ›no heslem" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Chyba pÅ™i odstraňovánà data vyprÅ¡enà platnosti" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Chyba pÅ™i nastavenà data vyprÅ¡enà platnosti" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "OdesÃlám..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "E-mail odeslán" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "Aktualizace neprobÄ›hla úspěšnÄ›. Nahlaste prosÃm problém do <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">evidence chyb ownCloud</a>" + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "Aktualizace byla úspěšná. PÅ™esmÄ›rovávám na ownCloud." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Obnovenà hesla pro ownCloud" @@ -445,87 +540,11 @@ msgstr "Hostitel databáze" msgid "Finish setup" msgstr "DokonÄit nastavenÃ" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "NedÄ›le" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "PondÄ›lÃ" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Úterý" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "StÅ™eda" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "ÄŒtvrtek" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Pátek" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Sobota" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Leden" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Únor" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "BÅ™ezen" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Duben" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "KvÄ›ten" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "ÄŒerven" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "ÄŒervenec" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Srpen" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "ZářÃ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "ŘÃjen" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Listopad" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Prosinec" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "webové služby pod Vašà kontrolou" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Odhlásit se" diff --git a/l10n/cs_CZ/files.po b/l10n/cs_CZ/files.po index e9fde9f772e..29be735c3fc 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-01-21 00:04+0100\n" -"PO-Revision-Date: 2013-01-20 10:48+0000\n" -"Last-Translator: Tomáš Chvátal <tomas.chvatal@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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,65 +20,46 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Odeslat" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Nelze pÅ™esunout %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Nelze pÅ™ejmenovat soubor" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Soubor nebyl odeslán. Neznámá chyba" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Soubor byl odeslán úspěšnÄ›" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "OdesÃlaný soubor pÅ™esahuje velikost upload_max_filesize povolenou v php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Odeslaný soubor pÅ™esáhl svou velikostà parametr MAX_FILE_SIZE specifikovaný v formuláři HTML" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Soubor byl odeslán pouze ÄásteÄnÄ›" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Žádný soubor nebyl odeslán" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Chybà adresář pro doÄasné soubory" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Zápis na disk selhal" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Nedostatek dostupného mÃsta" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Neplatný adresář" @@ -86,151 +67,151 @@ msgstr "Neplatný adresář" msgid "Files" msgstr "Soubory" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "ZruÅ¡it sdÃlenÃ" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Smazat" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "PÅ™ejmenovat" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} již existuje" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "nahradit" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "navrhnout název" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "zruÅ¡it" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "nahrazeno {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "zpÄ›t" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "nahrazeno {new_name} s {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "sdÃlenà zruÅ¡eno pro {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "smazáno {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' je neplatným názvem souboru." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Název souboru nemůže být prázdný Å™etÄ›zec." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Neplatný název, znaky '\\', '/', '<', '>', ':', '\"', '|', '?' a '*' nejsou povoleny." -#: js/files.js:204 +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "VaÅ¡e úložiÅ¡tÄ› je plné, nelze aktualizovat ani synchronizovat soubory." + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "VaÅ¡e úložiÅ¡tÄ› je téměř plné ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "VaÅ¡e soubory ke staženà se pÅ™ipravujÃ. Pokud jsou velké může to chvÃli trvat." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Nelze odeslat Váš soubor, protože je to adresář nebo má velikost 0 bajtů" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Chyba odesÃlánÃ" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "ZavÅ™Ãt" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "ÄŒekajÃcÃ" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "odesÃlá se 1 soubor" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "odesÃlám {count} souborů" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "OdesÃlánà zruÅ¡eno." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL nemůže být prázdná" -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "prozkoumáno {count} souborů" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "chyba pÅ™i prohledávánÃ" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Název" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Velikost" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "ZmÄ›nÄ›no" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 složka" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} složky" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 soubor" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} soubory" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Odeslat" + #: templates/admin.php:5 msgid "File handling" msgstr "Zacházenà se soubory" @@ -279,32 +260,40 @@ msgstr "Složka" msgid "From link" msgstr "Z odkazu" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "ZruÅ¡it odesÃlánÃ" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Žádný obsah. Nahrajte nÄ›co." -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Stáhnout" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Odeslaný soubor je pÅ™ÃliÅ¡ velký" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Soubory, které se snažÃte odeslat, pÅ™ekraÄujà limit velikosti odesÃlánà na tomto serveru." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Soubory se prohledávajÃ, prosÃm Äekejte." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Aktuálnà prohledávánÃ" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "Aktualizuji mezipaměť souborového systému..." diff --git a/l10n/cs_CZ/files_encryption.po b/l10n/cs_CZ/files_encryption.po index 4421784cb4d..c26a7ff0125 100644 --- a/l10n/cs_CZ/files_encryption.po +++ b/l10n/cs_CZ/files_encryption.po @@ -4,14 +4,14 @@ # # Translators: # Martin <fireball@atlas.cz>, 2012. -# Tomáš Chvátal <tomas.chvatal@gmail.com>, 2012. +# Tomáš Chvátal <tomas.chvatal@gmail.com>, 2012-2013. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-24 00:06+0100\n" +"PO-Revision-Date: 2013-01-23 20:21+0000\n" +"Last-Translator: Tomáš Chvátal <tomas.chvatal@gmail.com>\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" @@ -23,53 +23,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "pÅ™epnuto na Å¡ifrovánà na stranÄ› klienta" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +msgstr "ZmÄ›nit Å¡ifrovacà heslo na pÅ™ihlaÅ¡ovacÃ" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +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 "" +msgstr "Nelze zmÄ›nit Å¡ifrovacà heslo na pÅ™ihlaÅ¡ovacÃ." #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Vyberte režim Å¡ifrovánÃ:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Å ifrovánà na stranÄ› klienta (nejbezpeÄnÄ›jšà ale neumožňuje vám pÅ™istupovat k souborům z webového rozhranÃ)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Å ifrovánà na stranÄ› serveru (umožňuje vám pÅ™istupovat k souborům pomocà webového rozhranà i aplikacÃ)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Žádný (vůbec žádné Å¡ifrovánÃ)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Důležité: jak si jednou vyberete režim Å¡ifrovánà nelze jej opÄ›tovnÄ› zmÄ›nit" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "Definován uživatelem (umožnà uživateli si vybrat)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/cs_CZ/files_trashbin.po b/l10n/cs_CZ/files_trashbin.po new file mode 100644 index 00000000000..74a1948515a --- /dev/null +++ b/l10n/cs_CZ/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs_CZ\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/cs_CZ/settings.po b/l10n/cs_CZ/settings.po index 46a8fc5c515..0e0e0a55996 100644 --- a/l10n/cs_CZ/settings.po +++ b/l10n/cs_CZ/settings.po @@ -8,14 +8,14 @@ # Martin <fireball@atlas.cz>, 2011-2012. # Michal HruÅ¡ecký <Michal@hrusecky.net>, 2012. # <Michal@hrusecky.net>, 2012. -# Tomáš Chvátal <tomas.chvatal@gmail.com>, 2012. +# Tomáš Chvátal <tomas.chvatal@gmail.com>, 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 07:20+0000\n" +"Last-Translator: Tomáš Chvátal <tomas.chvatal@gmail.com>\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" @@ -93,7 +93,7 @@ msgstr "Povolit" msgid "Saving..." msgstr "Ukládám..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "ÄŒesky" @@ -105,15 +105,15 @@ msgstr "PÅ™idat Vašà aplikaci" msgid "More Apps" msgstr "VÃce aplikacÃ" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Vyberte aplikaci" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "VÃce na stránce s aplikacemi na apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licencováno <span class=\"author\"></span>" @@ -162,7 +162,7 @@ msgstr "Stáhnout klienta pro android" msgid "Download iOS Client" msgstr "Stáhnout klienta pro iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Heslo" @@ -232,11 +232,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Vyvinuto <a href=\"http://ownCloud.org/contact\" target=\"_blank\">komunitou ownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">zdrojový kód</a> je licencován pod <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Jméno" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "PÅ™ihlaÅ¡ovacà jméno" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Skupiny" @@ -248,26 +248,38 @@ msgstr "VytvoÅ™it" msgid "Default Storage" msgstr "Výchozà úložiÅ¡tÄ›" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "NeomezenÄ›" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Jiná" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "Zobrazované jméno" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Správa skupiny" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "ÚložiÅ¡tÄ›" -#: templates/users.php:133 +#: templates/users.php:97 +msgid "change display name" +msgstr "zmÄ›nit zobrazované jméno" + +#: templates/users.php:101 +msgid "set new password" +msgstr "nastavit nové heslo" + +#: templates/users.php:137 msgid "Default" msgstr "VýchozÃ" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Smazat" diff --git a/l10n/da/core.po b/l10n/da/core.po index 421994c63c8..fa817909c3b 100644 --- a/l10n/da/core.po +++ b/l10n/da/core.po @@ -5,9 +5,10 @@ # Translators: # <cronner@gmail.com>, 2012. # <mikkelbjerglarsen@gmail.com>, 2011, 2012. -# Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>, 2011-2012. +# Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>, 2011-2013. # Ole Holm Frandsen <froksen@gmail.com>, 2012. # Pascal d'Hermilly <pascal@dhermilly.dk>, 2011. +# Rasmus Paasch <rasmuspaasch@gmail.com>, 2013. # <simon@rosmi.dk>, 2012. # Thomas Tanghus <>, 2012. # Thomas Tanghus <thomas@tanghus.net>, 2012. @@ -15,8 +16,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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" @@ -25,24 +26,24 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "Bruger %s delte en fil med dig" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "Bruger %s delte en mappe med dig" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "Bruger %s delte filen \"%s\" med dig. Den kan hentes her: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -87,59 +88,135 @@ msgstr "Ingen kategorier valgt" msgid "Error removing %s from favorites." msgstr "Fejl ved fjernelse af %s fra favoritter." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Søndag" + +#: js/config.php:32 +msgid "Monday" +msgstr "Mandag" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Tirsdag" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Onsdag" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Torsdag" + +#: js/config.php:32 +msgid "Friday" +msgstr "Fredag" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Lørdag" + +#: js/config.php:33 +msgid "January" +msgstr "Januar" + +#: js/config.php:33 +msgid "February" +msgstr "Februar" + +#: js/config.php:33 +msgid "March" +msgstr "Marts" + +#: js/config.php:33 +msgid "April" +msgstr "April" + +#: js/config.php:33 +msgid "May" +msgstr "Maj" + +#: js/config.php:33 +msgid "June" +msgstr "Juni" + +#: js/config.php:33 +msgid "July" +msgstr "Juli" + +#: js/config.php:33 +msgid "August" +msgstr "August" + +#: js/config.php:33 +msgid "September" +msgstr "September" + +#: js/config.php:33 +msgid "October" +msgstr "Oktober" + +#: js/config.php:33 +msgid "November" +msgstr "November" + +#: js/config.php:33 +msgid "December" +msgstr "December" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Indstillinger" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "sekunder siden" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 minut siden" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} minutter siden" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 time siden" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} timer siden" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "i dag" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "i gÃ¥r" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} dage siden" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "sidste mÃ¥ned" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} mÃ¥neder siden" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "mÃ¥neder siden" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "sidste Ã¥r" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "Ã¥r siden" @@ -169,8 +246,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Fejl" @@ -182,122 +259,141 @@ 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:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 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 msgid "Error while sharing" msgstr "Fejl under deling" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Fejl under annullering af deling" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Fejl under justering af rettigheder" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Delt med dig og gruppen {group} af {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Delt med dig af {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Del med" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Del med link" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Beskyt med adgangskode" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Kodeord" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "E-mail link til person" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Send" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Vælg udløbsdato" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Udløbsdato" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Del via email:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Ingen personer fundet" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Videredeling ikke tilladt" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Delt i {item} med {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Fjern deling" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "kan redigere" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "Adgangskontrol" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "opret" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "opdater" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "slet" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "del" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Beskyttet med adgangskode" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Fejl ved fjernelse af udløbsdato" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Fejl under sætning af udløbsdato" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Sender ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "E-mail afsendt" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "Opdateringen blev ikke udført korrekt. Rapporter venligst problemet til <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownClouds community</a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "Opdateringen blev udført korrekt. Du bliver nu viderestillet til ownCloud." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Nulstil ownCloud kodeord" @@ -449,87 +545,11 @@ msgstr "Databasehost" msgid "Finish setup" msgstr "Afslut opsætning" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Søndag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Mandag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Tirsdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Onsdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Torsdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Fredag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Lørdag" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Januar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Februar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Marts" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "April" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Maj" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Juni" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Juli" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "August" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "September" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Oktober" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "November" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "December" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "Webtjenester under din kontrol" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Log ud" @@ -570,4 +590,4 @@ msgstr "næste" #: templates/update.php:3 #, php-format msgid "Updating ownCloud to version %s, this may take a while." -msgstr "" +msgstr "Opdatere Owncloud til version %s, dette kan tage et stykke tid." diff --git a/l10n/da/files.po b/l10n/da/files.po index f7bd3b92597..a58ad1dfbc2 100644 --- a/l10n/da/files.po +++ b/l10n/da/files.po @@ -4,7 +4,7 @@ # # Translators: # <cronner@gmail.com>, 2012. -# Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>, 2011-2012. +# Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>, 2011-2013. # Ole Holm Frandsen <froksen@gmail.com>, 2012. # <osos@openeyes.dk>, 2012. # Pascal d'Hermilly <pascal@dhermilly.dk>, 2011. @@ -15,8 +15,8 @@ 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 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" @@ -25,217 +25,198 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Upload" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Ingen fil blev uploadet. Ukendt fejl." -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Der er ingen fejl, filen blev uploadet med success" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Den uploadede fil overstiger upload_max_filesize direktivet i php.ini" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Den uploadede fil overskrider MAX_FILE_SIZE -direktivet som er specificeret i HTML-formularen" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Den uploadede file blev kun delvist uploadet" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Ingen fil blev uploadet" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Mangler en midlertidig mappe" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Fejl ved skrivning til disk." -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." -msgstr "" +msgstr "Ugyldig mappe." #: appinfo/app.php:10 msgid "Files" msgstr "Filer" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Fjern deling" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Slet" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Omdøb" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} eksisterer allerede" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "erstat" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "foreslÃ¥ navn" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "fortryd" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "erstattede {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "fortryd" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "erstattede {new_name} med {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "ikke delte {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "slettede {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." -msgstr "" +msgstr "'.' er et ugyldigt filnavn." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." -msgstr "" +msgstr "Filnavnet kan ikke stÃ¥ tomt." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Ugyldigt navn, '\\', '/', '<', '>', ':' | '?', '\"', '', og '*' er ikke tilladt." -#: js/files.js:204 +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "Din opbevaringsplads er fyldt op, filer kan ikke opdateres eller synkroniseres længere!" + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "Din opbevaringsplads er næsten fyldt op ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." -msgstr "" +msgstr "Dit download forberedes. Dette kan tage lidt tid ved større filer." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Kunne ikke uploade din fil, da det enten er en mappe eller er tom" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Fejl ved upload" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Luk" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Afventer" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 fil uploades" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} filer uploades" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Upload afbrudt." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URLen kan ikke være tom." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" -msgstr "" - -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} filer skannet" +msgstr "Ugyldigt mappenavn. Brug af \"Shared\" er forbeholdt Owncloud" -#: js/files.js:783 -msgid "error while scanning" -msgstr "fejl under scanning" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Navn" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Størrelse" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Ændret" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 mappe" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} mapper" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 fil" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} filer" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Upload" + #: templates/admin.php:5 msgid "File handling" msgstr "FilhÃ¥ndtering" @@ -284,32 +265,40 @@ msgstr "Mappe" msgid "From link" msgstr "Fra link" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Fortryd upload" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Her er tomt. Upload noget!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Download" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Upload for stor" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Filerne, du prøver at uploade, er større end den maksimale størrelse for fil-upload pÃ¥ denne server." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Filerne bliver indlæst, vent venligst." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Indlæser" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/da/files_encryption.po b/l10n/da/files_encryption.po index 14b94d9d7ae..78a06bdcabc 100644 --- a/l10n/da/files_encryption.po +++ b/l10n/da/files_encryption.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>, 2013. # <osos@openeyes.dk>, 2012. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-30 00:23+0100\n" +"PO-Revision-Date: 2013-01-29 12:03+0000\n" +"Last-Translator: Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>\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" @@ -22,53 +23,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "skiftet til kryptering pÃ¥ klientsiden" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +msgstr "Udskift krypteringskode til login-adgangskode" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +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 "" +msgstr "Kunne ikke udskifte krypteringskode med login-adgangskode" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Vælg krypteringsform:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Kryptering pÃ¥ klientsiden (mere sikker, men udelukker adgang til dataene fra webinterfacet)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Kryptering pÃ¥ serversiden (gør det muligt at tilgÃ¥ filer fra webinterfacet sÃ¥vel som desktopklienten)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Ingen (ingen kryptering)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Vigtigt: NÃ¥r der er valgt krypteringsform, kan det ikke ændres tilbage igen." #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "Brugerspecifik (lad brugeren bestemme)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/da/files_trashbin.po b/l10n/da/files_trashbin.po new file mode 100644 index 00000000000..f79e0b15795 --- /dev/null +++ b/l10n/da/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/da/lib.po b/l10n/da/lib.po index c1bdc6f0b94..5596da61c31 100644 --- a/l10n/da/lib.po +++ b/l10n/da/lib.po @@ -4,15 +4,15 @@ # # Translators: # <cronner@gmail.com>, 2012. -# Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>, 2012. +# Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>, 2012-2013. # <osos@openeyes.dk>, 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" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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 <morten@writtenandread.net>\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" @@ -60,9 +60,9 @@ msgstr "Tilbage til Filer" msgid "Selected files too large to generate zip file." msgstr "De markerede filer er for store til at generere en ZIP-fil." -#: helper.php:228 +#: helper.php:229 msgid "couldn't be determined" -msgstr "" +msgstr "kunne ikke fastslÃ¥s" #: json.php:28 msgid "Application is not enabled" diff --git a/l10n/da/settings.po b/l10n/da/settings.po index 314d85e2306..41dabd7ce4f 100644 --- a/l10n/da/settings.po +++ b/l10n/da/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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" @@ -97,7 +97,7 @@ msgstr "Aktiver" msgid "Saving..." msgstr "Gemmer..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Dansk" @@ -109,15 +109,15 @@ msgstr "Tilføj din App" msgid "More Apps" msgstr "Flere Apps" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Vælg en App" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Se applikationens side pÃ¥ apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licenseret af <span class=\"author\"></span>" @@ -166,7 +166,7 @@ msgstr "Hent Android Klient" msgid "Download iOS Client" msgstr "Hent iOS Klient" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Kodeord" @@ -236,11 +236,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Udviklet af <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownClouds community</a>, og <a href=\"https://github.com/owncloud\" target=\"_blank\">kildekoden</a> er underlagt licensen <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Navn" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupper" @@ -252,26 +252,38 @@ msgstr "Ny" msgid "Default Storage" msgstr "Standard opbevaring" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Ubegrænset" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Andet" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Gruppe Administrator" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Opbevaring" -#: templates/users.php:133 +#: 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 "Standard" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Slet" diff --git a/l10n/da/user_webdavauth.po b/l10n/da/user_webdavauth.po index 16782a7f125..32a2a3729ab 100644 --- a/l10n/da/user_webdavauth.po +++ b/l10n/da/user_webdavauth.po @@ -4,13 +4,14 @@ # # Translators: # <cronner@gmail.com>, 2012. +# Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>, 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-30 00:23+0100\n" +"PO-Revision-Date: 2013-01-29 12:07+0000\n" +"Last-Translator: Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>\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,7 +21,7 @@ msgstr "" #: templates/settings.php:3 msgid "WebDAV Authentication" -msgstr "" +msgstr "WebDAV-godkendelse" #: templates/settings.php:4 msgid "URL: http://" @@ -31,4 +32,4 @@ 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 vil sende brugerens oplysninger til denne URL. Plugin'et registrerer responsen og fortolker HTTP-statuskoder 401 og 403 som ugyldige oplysninger, men alle andre besvarelser som gyldige oplysninger." diff --git a/l10n/de/core.po b/l10n/de/core.po index 2210b4b29e2..ef51cc996c4 100644 --- a/l10n/de/core.po +++ b/l10n/de/core.po @@ -11,7 +11,7 @@ # I Robot <thomas.mueller@tmit.eu>, 2012. # Jan-Christoph Borchardt <JanCBorchardt@fsfe.org>, 2011. # <mail@felixmoeller.de>, 2012. -# Marcel Kühlhorn <susefan93@gmx.de>, 2012. +# Marcel Kühlhorn <susefan93@gmx.de>, 2012-2013. # <markus.thiel@desico.de>, 2012. # <m.fresel@sysangels.com>, 2012. # <niko@nik-o-mat.de>, 2012. @@ -23,8 +23,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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "Der Nutzer %s hat eine Datei für Dich freigegeben" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "%s hat ein Verzeichnis für Dich freigegeben" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "%s hat eine Datei \"%s\" für Dich freigegeben. Sie ist zum Download hier ferfügbar: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -95,59 +95,135 @@ msgstr "Es wurde keine Kategorien zum Löschen ausgewählt." msgid "Error removing %s from favorites." msgstr "Fehler beim Entfernen von %s von den Favoriten." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Sonntag" + +#: js/config.php:32 +msgid "Monday" +msgstr "Montag" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Dienstag" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Mittwoch" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Donnerstag" + +#: js/config.php:32 +msgid "Friday" +msgstr "Freitag" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Samstag" + +#: js/config.php:33 +msgid "January" +msgstr "Januar" + +#: js/config.php:33 +msgid "February" +msgstr "Februar" + +#: js/config.php:33 +msgid "March" +msgstr "März" + +#: js/config.php:33 +msgid "April" +msgstr "April" + +#: js/config.php:33 +msgid "May" +msgstr "Mai" + +#: js/config.php:33 +msgid "June" +msgstr "Juni" + +#: js/config.php:33 +msgid "July" +msgstr "Juli" + +#: js/config.php:33 +msgid "August" +msgstr "August" + +#: js/config.php:33 +msgid "September" +msgstr "September" + +#: js/config.php:33 +msgid "October" +msgstr "Oktober" + +#: js/config.php:33 +msgid "November" +msgstr "November" + +#: js/config.php:33 +msgid "December" +msgstr "Dezember" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Einstellungen" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "Gerade eben" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "vor einer Minute" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "Vor {minutes} Minuten" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "Vor einer Stunde" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "Vor {hours} Stunden" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "Heute" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "Gestern" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "Vor {days} Tag(en)" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "Letzten Monat" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "Vor {months} Monaten" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "Vor Monaten" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "Letztes Jahr" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "Vor Jahren" @@ -177,8 +253,8 @@ msgid "The object type is not specified." msgstr "Der Objekttyp ist nicht angegeben." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Fehler" @@ -190,122 +266,141 @@ msgstr "Der App-Name ist nicht angegeben." msgid "The required file {file} is not installed!" msgstr "Die benötigte Datei {file} ist nicht installiert." -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Freigeben" + +#: 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 "Fehler beim Freigeben" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Fehler beim Aufheben der Freigabe" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Fehler beim Ändern der Rechte" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "{owner} hat dies für Dich und die Gruppe {group} freigegeben" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "{owner} hat dies für Dich freigegeben" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Freigeben für" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Über einen Link freigeben" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Passwortschutz" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Passwort" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Link per E-Mail verschicken" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Senden" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Setze ein Ablaufdatum" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Ablaufdatum" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Über eine E-Mail freigeben:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Niemand gefunden" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Weiterverteilen ist nicht erlaubt" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Für {user} in {item} freigegeben" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Freigabe aufheben" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "kann bearbeiten" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "Zugriffskontrolle" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "erstellen" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "aktualisieren" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "löschen" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "freigeben" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Durch ein Passwort geschützt" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Fehler beim entfernen des Ablaufdatums" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Fehler beim Setzen des Ablaufdatums" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Sende ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "E-Mail wurde verschickt" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "Das Update ist fehlgeschlagen. Bitte melden Sie dieses Problem an die <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud Gemeinschaft</a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "Das Update war erfolgreich. Sie werden nun zu ownCloud weitergeleitet." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud-Passwort zurücksetzen" @@ -457,87 +552,11 @@ msgstr "Datenbank-Host" msgid "Finish setup" msgstr "Installation abschließen" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Sonntag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Montag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Dienstag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Mittwoch" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Donnerstag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Freitag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Samstag" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Januar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Februar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "März" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "April" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Mai" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Juni" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Juli" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "August" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "September" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Oktober" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "November" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Dezember" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "Web-Services unter Ihrer Kontrolle" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Abmelden" diff --git a/l10n/de/files.po b/l10n/de/files.po index 0ee39b9a487..93e568ef6e5 100644 --- a/l10n/de/files.po +++ b/l10n/de/files.po @@ -27,9 +27,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:38+0000\n" -"Last-Translator: Marcel Kühlhorn <susefan93@gmx.de>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -37,65 +37,46 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Hochladen" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Konnte %s nicht verschieben" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Konnte Datei nicht umbenennen" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Keine Datei hochgeladen. Unbekannter Fehler" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Datei fehlerfrei hochgeladen." -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Die hochgeladene Datei überschreitet die upload_max_filesize Vorgabe in php.ini" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Die Größe der hochzuladenden Datei überschreitet die MAX_FILE_SIZE-Richtlinie, die im HTML-Formular angegeben wurde" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Die Datei wurde nur teilweise hochgeladen." -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Es wurde keine Datei hochgeladen." -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Temporärer Ordner fehlt." -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Fehler beim Schreiben auf die Festplatte" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Nicht genug Speicherplatz verfügbar" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Ungültiges Verzeichnis" @@ -103,151 +84,151 @@ msgstr "Ungültiges Verzeichnis" msgid "Files" msgstr "Dateien" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Nicht mehr freigeben" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Löschen" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Umbenennen" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} existiert bereits" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "ersetzen" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "Name vorschlagen" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "abbrechen" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "{new_name} wurde ersetzt" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "rückgängig machen" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "{old_name} ersetzt durch {new_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "Freigabe von {files} aufgehoben" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "{files} gelöscht" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' ist kein gültiger Dateiname" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Der Dateiname darf nicht leer sein" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Ungültiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig." -#: js/files.js:204 +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "Ihr Speicherplatz ist voll, Dateien können nicht mehr aktualisiert oder synchronisiert werden!" + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "Ihr Speicherplatz ist fast aufgebraucht ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "Dein Download wird vorbereitet. Dies kann bei größeren Dateien etwas dauern." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Deine Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist." -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Fehler beim Upload" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Schließen" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Ausstehend" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "Eine Datei wird hoch geladen" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} Dateien werden hochgeladen" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Upload abgebrochen." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "Die URL darf nicht leer sein" -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "{count} Dateien wurden gescannt" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "Fehler beim Scannen" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Name" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Größe" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Bearbeitet" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 Ordner" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} Ordner" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 Datei" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} Dateien" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Hochladen" + #: templates/admin.php:5 msgid "File handling" msgstr "Dateibehandlung" @@ -296,32 +277,40 @@ msgstr "Ordner" msgid "From link" msgstr "Von einem Link" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Upload abbrechen" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Alles leer. Lade etwas hoch!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Herunterladen" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Upload zu groß" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Die Datei überschreitet die Maximalgröße für Uploads auf diesem Server." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Dateien werden gescannt, bitte warten." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Scanne" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/de/files_encryption.po b/l10n/de/files_encryption.po index ba08625264e..2407e4ec911 100644 --- a/l10n/de/files_encryption.po +++ b/l10n/de/files_encryption.po @@ -4,13 +4,14 @@ # # Translators: # <driz@i2pmail.org>, 2012. +# Marcel Kühlhorn <susefan93@gmx.de>, 2013. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 12:47+0000\n" +"Last-Translator: Marcel Kühlhorn <susefan93@gmx.de>\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" @@ -22,53 +23,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "Zur Clientseitigen Verschlüsselung gewechselt" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +msgstr "Ändern des Verschlüsselungspasswortes zum Anmeldepasswort" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +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 "" +msgstr "Ihr Verschlüsselungspasswort konnte nicht als Anmeldepasswort gesetzt werden." #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Wählen Sie die Verschlüsselungsart:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Clientseitige Verschlüsselung (am sichersten, aber macht es unmöglich auf ihre Daten über das Webinterface zuzugreifen)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Serverseitige Verschlüsselung (erlaubt es ihnen auf ihre Daten über das Webinterface und den Desktop-Client zuzugreifen)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Keine (ohne Verschlüsselung)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Wichtig: Sobald sie eine Verschlüsselungsmethode gewählt haben, können Sie diese nicht ändern!" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "Benutzerspezifisch (der Benutzer kann entscheiden)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/de/files_trashbin.po b/l10n/de/files_trashbin.po new file mode 100644 index 00000000000..0b445ccb0e6 --- /dev/null +++ b/l10n/de/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/de/settings.po b/l10n/de/settings.po index 1616f6a893d..018f7ab7262 100644 --- a/l10n/de/settings.po +++ b/l10n/de/settings.po @@ -20,12 +20,13 @@ # Phi Lieb <>, 2012. # <thomas.mueller@tmit.eu>, 2012. # <transifex.3.mensaje@spamgourmet.com>, 2012. +# Tristan <blobbyjj@ymail.com>, 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" @@ -104,7 +105,7 @@ msgstr "Aktivieren" msgid "Saving..." msgstr "Speichern..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Deutsch (Persönlich)" @@ -116,15 +117,15 @@ msgstr "Füge Deine Anwendung hinzu" msgid "More Apps" msgstr "Weitere Anwendungen" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Wähle eine Anwendung aus" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Weitere Anwendungen findest Du auf apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-lizenziert von <span class=\"author\"></span>" @@ -159,7 +160,7 @@ msgstr "Du verwendest <strong>%s</strong> der verfügbaren <strong>%s<strong>" #: templates/personal.php:12 msgid "Clients" -msgstr "Kunden" +msgstr "Clients" #: templates/personal.php:13 msgid "Download Desktop Clients" @@ -173,7 +174,7 @@ msgstr "Android-Client herunterladen" msgid "Download iOS Client" msgstr "iOS-Client herunterladen" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Passwort" @@ -243,11 +244,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Entwickelt von der <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud-Community</a>, der <a href=\"https://github.com/owncloud\" target=\"_blank\">Quellcode</a> ist unter der <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> lizenziert." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Name" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Gruppen" @@ -259,26 +260,38 @@ msgstr "Anlegen" msgid "Default Storage" msgstr "Standard-Speicher" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Unbegrenzt" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Andere" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Gruppenadministrator" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Speicher" -#: templates/users.php:133 +#: 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 "Standard" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Löschen" diff --git a/l10n/de/user_ldap.po b/l10n/de/user_ldap.po index b706cd2fe26..e003a2e24bb 100644 --- a/l10n/de/user_ldap.po +++ b/l10n/de/user_ldap.po @@ -6,6 +6,7 @@ # <blobbyjj@ymail.com>, 2012. # I Robot <owncloud-bot@tmit.eu>, 2012. # I Robot <thomas.mueller@tmit.eu>, 2012. +# Marcel Kühlhorn <susefan93@gmx.de>, 2013. # Maurice Preuß <>, 2012. # <niko@nik-o-mat.de>, 2012. # Phi Lieb <>, 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-01-16 00:19+0100\n" -"PO-Revision-Date: 2013-01-15 23:20+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 12:47+0000\n" +"Last-Translator: Marcel Kühlhorn <susefan93@gmx.de>\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" @@ -36,7 +37,7 @@ msgstr "<b>Warnung:</b> Die Anwendungen user_ldap und user_webdavauth sind inkom msgid "" "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not " "work. Please ask your system administrator to install it." -msgstr "" +msgstr "<b>Warnung:</b> Da das PHP-Modul für LDAP ist nicht installiert, das Backend wird nicht funktionieren. Bitten Sie Ihren Systemadministrator das Modul zu installieren." #: templates/settings.php:15 msgid "Host" @@ -53,7 +54,7 @@ msgstr "Basis-DN" #: templates/settings.php:16 msgid "One Base DN per line" -msgstr "" +msgstr "Ein Base DN pro Zeile" #: templates/settings.php:16 msgid "You can specify Base DN for users and groups in the Advanced tab" @@ -128,7 +129,7 @@ msgstr "Basis-Benutzerbaum" #: templates/settings.php:25 msgid "One User Base DN per line" -msgstr "" +msgstr "Ein Benutzer Base DN pro Zeile" #: templates/settings.php:26 msgid "Base Group Tree" @@ -136,7 +137,7 @@ msgstr "Basis-Gruppenbaum" #: templates/settings.php:26 msgid "One Group Base DN per line" -msgstr "" +msgstr "Ein Gruppen Base DN pro Zeile" #: templates/settings.php:27 msgid "Group-Member association" diff --git a/l10n/de_DE/core.po b/l10n/de_DE/core.po index 9f9775ff12e..f1b0ea2e3c1 100644 --- a/l10n/de_DE/core.po +++ b/l10n/de_DE/core.po @@ -9,10 +9,11 @@ # <blobbyjj@ymail.com>, 2012. # <deh3nne@deviantdev.com>, 2012. # <georg.stefan.germany@googlemail.com>, 2011. +# I Robot <owncloud-bot@tmit.eu>, 2013. # I Robot <thomas.mueller@tmit.eu>, 2012. # Jan-Christoph Borchardt <JanCBorchardt@fsfe.org>, 2011. # <mail@felixmoeller.de>, 2012. -# Marcel Kühlhorn <susefan93@gmx.de>, 2012. +# Marcel Kühlhorn <susefan93@gmx.de>, 2012-2013. # <m.fresel@sysangels.com>, 2012. # <niko@nik-o-mat.de>, 2012. # Phi Lieb <>, 2012. @@ -23,9 +24,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:11+0000\n" -"Last-Translator: a.tangemann <a.tangemann@web.de>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -33,24 +34,24 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "Der Nutzer %s hat eine Datei für Sie freigegeben" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "%s hat ein Verzeichnis für Sie freigegeben" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "%s hat eine Datei \"%s\" für Sie freigegeben. Sie ist zum Download hier ferfügbar: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -95,59 +96,135 @@ msgstr "Es wurden keine Kategorien zum Löschen ausgewählt." msgid "Error removing %s from favorites." msgstr "Fehler beim Entfernen von %s von den Favoriten." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Sonntag" + +#: js/config.php:32 +msgid "Monday" +msgstr "Montag" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Dienstag" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Mittwoch" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Donnerstag" + +#: js/config.php:32 +msgid "Friday" +msgstr "Freitag" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Samstag" + +#: js/config.php:33 +msgid "January" +msgstr "Januar" + +#: js/config.php:33 +msgid "February" +msgstr "Februar" + +#: js/config.php:33 +msgid "March" +msgstr "März" + +#: js/config.php:33 +msgid "April" +msgstr "April" + +#: js/config.php:33 +msgid "May" +msgstr "Mai" + +#: js/config.php:33 +msgid "June" +msgstr "Juni" + +#: js/config.php:33 +msgid "July" +msgstr "Juli" + +#: js/config.php:33 +msgid "August" +msgstr "August" + +#: js/config.php:33 +msgid "September" +msgstr "September" + +#: js/config.php:33 +msgid "October" +msgstr "Oktober" + +#: js/config.php:33 +msgid "November" +msgstr "November" + +#: js/config.php:33 +msgid "December" +msgstr "Dezember" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Einstellungen" -#: js/js.js:706 +#: js/js.js:762 msgid "seconds ago" msgstr "Gerade eben" -#: js/js.js:707 +#: js/js.js:763 msgid "1 minute ago" msgstr "Vor 1 Minute" -#: js/js.js:708 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "Vor {minutes} Minuten" -#: js/js.js:709 +#: js/js.js:765 msgid "1 hour ago" msgstr "Vor einer Stunde" -#: js/js.js:710 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "Vor {hours} Stunden" -#: js/js.js:711 +#: js/js.js:767 msgid "today" msgstr "Heute" -#: js/js.js:712 +#: js/js.js:768 msgid "yesterday" msgstr "Gestern" -#: js/js.js:713 +#: js/js.js:769 msgid "{days} days ago" msgstr "Vor {days} Tag(en)" -#: js/js.js:714 +#: js/js.js:770 msgid "last month" msgstr "Letzten Monat" -#: js/js.js:715 +#: js/js.js:771 msgid "{months} months ago" msgstr "Vor {months} Monaten" -#: js/js.js:716 +#: js/js.js:772 msgid "months ago" msgstr "Vor Monaten" -#: js/js.js:717 +#: js/js.js:773 msgid "last year" msgstr "Letztes Jahr" -#: js/js.js:718 +#: js/js.js:774 msgid "years ago" msgstr "Vor Jahren" @@ -177,8 +254,8 @@ msgid "The object type is not specified." msgstr "Der Objekttyp ist nicht angegeben." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Fehler" @@ -190,122 +267,141 @@ msgstr "Der App-Name ist nicht angegeben." msgid "The required file {file} is not installed!" msgstr "Die benötigte Datei {file} ist nicht installiert." -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Freigeben" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Shared" +msgstr "Freigegeben" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Fehler bei der Freigabe" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Fehler bei der Aufhebung der Freigabe" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Fehler bei der Änderung der Rechte" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Durch {owner} für Sie und die Gruppe {group} freigegeben." -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Durch {owner} für Sie freigegeben." -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Freigeben für" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Über einen Link freigeben" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Passwortschutz" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Passwort" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Link per E-Mail verschicken" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Senden" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Setze ein Ablaufdatum" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Ablaufdatum" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Mittels einer E-Mail freigeben:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Niemand gefunden" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Das Weiterverteilen ist nicht erlaubt" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Freigegeben in {item} von {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Freigabe aufheben" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "kann bearbeiten" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "Zugriffskontrolle" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "erstellen" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "aktualisieren" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "löschen" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "freigeben" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Durch ein Passwort geschützt" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Fehler beim Entfernen des Ablaufdatums" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Fehler beim Setzen des Ablaufdatums" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Sende ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Email gesendet" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "Das Update ist fehlgeschlagen. Bitte melden Sie dieses Problem an die <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud Gemeinschaft</a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "Das Update war erfolgreich. Sie werden nun zu ownCloud weitergeleitet." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud-Passwort zurücksetzen" @@ -457,87 +553,11 @@ msgstr "Datenbank-Host" msgid "Finish setup" msgstr "Installation abschließen" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Sonntag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Montag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Dienstag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Mittwoch" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Donnerstag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Freitag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Samstag" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Januar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Februar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "März" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "April" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Mai" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Juni" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Juli" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "August" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "September" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Oktober" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "November" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Dezember" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "Web-Services unter Ihrer Kontrolle" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Abmelden" diff --git a/l10n/de_DE/files.po b/l10n/de_DE/files.po index 99ea2d6f096..dab36be8e0c 100644 --- a/l10n/de_DE/files.po +++ b/l10n/de_DE/files.po @@ -4,6 +4,7 @@ # # Translators: # <admin@s-goecker.de>, 2012. +# Andreas Tangemann <a.tangemann@web.de>, 2013. # <a.tangemann@web.de>, 2012-2013. # <blobbyjj@ymail.com>, 2012. # I Robot <owncloud-bot@tmit.eu>, 2012-2013. @@ -27,9 +28,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:24+0000\n" -"Last-Translator: Marcel Kühlhorn <susefan93@gmx.de>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -37,65 +38,46 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Hochladen" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Konnte %s nicht verschieben" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Konnte Datei nicht umbenennen" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Keine Datei hochgeladen. Unbekannter Fehler" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Es sind keine Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen." -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Die hochgeladene Datei überschreitet die upload_max_filesize Vorgabe in php.ini" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Die Größe der hochzuladenden Datei überschreitet die MAX_FILE_SIZE-Richtlinie, die im HTML-Formular angegeben wurde" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Die Datei wurde nur teilweise hochgeladen." -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Es wurde keine Datei hochgeladen." -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Der temporäre Ordner fehlt." -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Fehler beim Schreiben auf die Festplatte" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Nicht genügend Speicherplatz verfügbar" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Ungültiges Verzeichnis." @@ -103,151 +85,151 @@ msgstr "Ungültiges Verzeichnis." msgid "Files" msgstr "Dateien" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Nicht mehr freigeben" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Löschen" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Umbenennen" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} existiert bereits" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "ersetzen" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "Name vorschlagen" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "abbrechen" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "{new_name} wurde ersetzt" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "rückgängig machen" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "{old_name} wurde ersetzt durch {new_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "Freigabe für {files} beendet" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "{files} gelöscht" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' ist kein gültiger Dateiname." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Der Dateiname darf nicht leer sein." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Ungültiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig." -#: js/files.js:204 +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "Ihr Speicher ist voll. Daher können keine Dateien mehr aktualisiert oder synchronisiert werden!" + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "Ihr Speicher ist fast voll ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "Ihr Download wird vorbereitet. Dies kann bei größeren Dateien einen Moment dauern." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Ihre Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist." -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Fehler beim Upload" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Schließen" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Ausstehend" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 Datei wird hochgeladen" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} Dateien wurden hochgeladen" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Upload abgebrochen." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "Die URL darf nicht leer sein." -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "{count} Dateien wurden gescannt" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "Fehler beim Scannen" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Name" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Größe" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Bearbeitet" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 Ordner" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} Ordner" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 Datei" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} Dateien" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Hochladen" + #: templates/admin.php:5 msgid "File handling" msgstr "Dateibehandlung" @@ -296,32 +278,40 @@ msgstr "Ordner" msgid "From link" msgstr "Von einem Link" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Upload abbrechen" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Alles leer. Bitte laden Sie etwas hoch!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Herunterladen" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Der Upload ist zu groß" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Die Datei überschreitet die Maximalgröße für Uploads auf diesem Server." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Dateien werden gescannt, bitte warten." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Scanne" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/de_DE/files_encryption.po b/l10n/de_DE/files_encryption.po index 749067c3bbc..daeb5466e57 100644 --- a/l10n/de_DE/files_encryption.po +++ b/l10n/de_DE/files_encryption.po @@ -3,14 +3,18 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <admin@kaio.ws>, 2013. +# Andreas Tangemann <a.tangemann@web.de>, 2013. # <driz@i2pmail.org>, 2012. +# Marc-Andre Husyk <member@wue.de>, 2013. +# Marcel Kühlhorn <susefan93@gmx.de>, 2013. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 12:47+0000\n" +"Last-Translator: Marcel Kühlhorn <susefan93@gmx.de>\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,53 +26,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "Zur Clientseitigen Verschlüsselung gewechselt" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +msgstr "Ändern des Verschlüsselungspasswortes zum Anmeldepasswort" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +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 "" +msgstr "Ihr Verschlüsselungspasswort konnte nicht als Anmeldepasswort gesetzt werden." #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Wählen Sie die Verschlüsselungsmethode:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Clientseitige Verschlüsselung (am sichersten, aber macht es unmöglich auf ihre Daten über das Webinterface zuzugreifen)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Serverseitige Verschlüsselung (erlaubt es ihnen auf ihre Daten über das Webinterface und den Desktop-Client zuzugreifen)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Keine (ohne Verschlüsselung)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Wichtig: Sobald sie eine Verschlüsselungsmethode gewählt haben, können Sie diese nicht ändern!" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "Benutzerspezifisch (der Benutzer kann entscheiden)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/de_DE/files_trashbin.po b/l10n/de_DE/files_trashbin.po new file mode 100644 index 00000000000..7cf2c7e39ab --- /dev/null +++ b/l10n/de_DE/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/de_DE/settings.po b/l10n/de_DE/settings.po index 98a84230b5c..008ed72b962 100644 --- a/l10n/de_DE/settings.po +++ b/l10n/de_DE/settings.po @@ -20,12 +20,13 @@ # <thomas.mueller@tmit.eu>, 2012. # <transifex-2.7.mensaje@spamgourmet.com>, 2012. # <transifex.3.mensaje@spamgourmet.com>, 2012. +# Tristan <blobbyjj@ymail.com>, 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" "MIME-Version: 1.0\n" @@ -104,7 +105,7 @@ msgstr "Aktivieren" msgid "Saving..." msgstr "Speichern..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Deutsch (Förmlich: Sie)" @@ -116,15 +117,15 @@ msgstr "Fügen Sie Ihre Anwendung hinzu" msgid "More Apps" msgstr "Weitere Anwendungen" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Wählen Sie eine Anwendung aus" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Weitere Anwendungen finden Sie auf apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-lizenziert von <span class=\"author\"></span>" @@ -159,7 +160,7 @@ msgstr "Sie verwenden <strong>%s</strong> der verfügbaren <strong>%s</strong>" #: templates/personal.php:12 msgid "Clients" -msgstr "Kunden" +msgstr "Clients" #: templates/personal.php:13 msgid "Download Desktop Clients" @@ -173,7 +174,7 @@ msgstr "Android-Client herunterladen" msgid "Download iOS Client" msgstr "iOS-Client herunterladen" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Passwort" @@ -243,11 +244,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Entwickelt von der <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud-Community</a>. Der <a href=\"https://github.com/owncloud\" target=\"_blank\">Quellcode</a> ist unter der <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> lizenziert." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Name" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Gruppen" @@ -259,26 +260,38 @@ msgstr "Anlegen" msgid "Default Storage" msgstr "Standard-Speicher" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Unbegrenzt" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Andere" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Gruppenadministrator" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Speicher" -#: templates/users.php:133 +#: 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 "Standard" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Löschen" diff --git a/l10n/de_DE/user_ldap.po b/l10n/de_DE/user_ldap.po index 440d30ce2bc..a48677b16c2 100644 --- a/l10n/de_DE/user_ldap.po +++ b/l10n/de_DE/user_ldap.po @@ -6,6 +6,7 @@ # Andreas Tangemann <a.tangemann@web.de>, 2013. # <blobbyjj@ymail.com>, 2012. # I Robot <thomas.mueller@tmit.eu>, 2012. +# Marcel Kühlhorn <susefan93@gmx.de>, 2013. # Maurice Preuß <>, 2012. # <niko@nik-o-mat.de>, 2012. # Phi Lieb <>, 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-01-19 00:04+0100\n" -"PO-Revision-Date: 2013-01-18 21:26+0000\n" -"Last-Translator: a.tangemann <a.tangemann@web.de>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 12:47+0000\n" +"Last-Translator: Marcel Kühlhorn <susefan93@gmx.de>\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" @@ -36,7 +37,7 @@ msgstr "<b>Warnung:</b> Die Anwendungen user_ldap und user_webdavauth sind inkom msgid "" "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not " "work. Please ask your system administrator to install it." -msgstr "<b>Warnung:</b> Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitten Sie Ihren Systemadministrator das Modul zu installieren." +msgstr "<b>Warnung:</b> Da das PHP-Modul für LDAP ist nicht installiert, das Backend wird nicht funktionieren. Bitten Sie Ihren Systemadministrator das Modul zu installieren." #: templates/settings.php:15 msgid "Host" diff --git a/l10n/el/core.po b/l10n/el/core.po index 9f541a6eda9..07b4bd3275e 100644 --- a/l10n/el/core.po +++ b/l10n/el/core.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 20:33+0000\n" -"Last-Translator: xneo1 <vagelis@cyberdest.com>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -25,24 +25,24 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "Ο χÏήστης %s διαμοιÏάστηκε Îνα αÏχείο με εσάς" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "Ο χÏήστης %s διαμοιÏάστηκε Îνα φάκελο με εσάς" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "Ο χÏήστης %s διαμοιÏάστηκε το αÏχείο \"%s\" μαζί σας. Είναι διαθÎσιμο για λήψη εδώ: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -87,59 +87,135 @@ msgstr "Δεν επιλÎχτηκαν κατηγοÏίες για διαγÏαφ msgid "Error removing %s from favorites." msgstr "Σφάλμα αφαίÏεσης %s από τα αγαπημÎνα." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Ρυθμίσεις" -#: js/js.js:706 +#: js/js.js:762 msgid "seconds ago" msgstr "δευτεÏόλεπτα Ï€Ïιν" -#: js/js.js:707 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 λεπτό Ï€Ïιν" -#: js/js.js:708 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} λεπτά Ï€Ïιν" -#: js/js.js:709 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 ÏŽÏα Ï€Ïιν" -#: js/js.js:710 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} ÏŽÏες Ï€Ïιν" -#: js/js.js:711 +#: js/js.js:767 msgid "today" msgstr "σήμεÏα" -#: js/js.js:712 +#: js/js.js:768 msgid "yesterday" msgstr "χτες" -#: js/js.js:713 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} ημÎÏες Ï€Ïιν" -#: js/js.js:714 +#: js/js.js:770 msgid "last month" msgstr "τελευταίο μήνα" -#: js/js.js:715 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} μήνες Ï€Ïιν" -#: js/js.js:716 +#: js/js.js:772 msgid "months ago" msgstr "μήνες Ï€Ïιν" -#: js/js.js:717 +#: js/js.js:773 msgid "last year" msgstr "τελευταίο χÏόνο" -#: js/js.js:718 +#: js/js.js:774 msgid "years ago" msgstr "χÏόνια Ï€Ïιν" @@ -169,8 +245,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Σφάλμα" @@ -182,122 +258,141 @@ msgstr "Δεν καθοÏίστηκε το όνομα της εφαÏμογής. msgid "The required file {file} is not installed!" msgstr "Το απαιτοÏμενο αÏχείο {file} δεν εγκαταστάθηκε!" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Σφάλμα κατά το σταμάτημα του διαμοιÏασμοÏ" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Σφάλμα κατά την αλλαγή των δικαιωμάτων" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "ΔιαμοιÏάστηκε με σας και με την ομάδα {group} του {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "ΔιαμοιÏάστηκε με σας από τον {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "ΔιαμοιÏασμός με" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "ΔιαμοιÏασμός με σÏνδεσμο" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Î Ïοστασία συνθηματικοÏ" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Συνθηματικό" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Αποστολή συνδÎσμου με email " -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Αποστολή" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "ΟÏισμός ημ. λήξης" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "ΗμεÏομηνία λήξης" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "ΔιαμοιÏασμός μÎσω email:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Δεν βÏÎθηκε άνθÏωπος" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "ΞαναμοιÏασμός δεν επιτÏÎπεται" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "ΔιαμοιÏασμός του {item} με τον {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Σταμάτημα διαμοιÏασμοÏ" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "δυνατότητα αλλαγής" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "Îλεγχος Ï€Ïόσβασης" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "δημιουÏγία" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "ενημÎÏωση" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "διαγÏαφή" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "διαμοιÏασμός" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Î Ïοστασία με συνθηματικό" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Σφάλμα κατά την διαγÏαφή της ημ. λήξης" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Σφάλμα κατά τον οÏισμό ημ. λήξης" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Αποστολή..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Το Email απεστάλη " +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ΕπαναφοÏά ÏƒÏ…Î½Î¸Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï ownCloud" @@ -449,87 +544,11 @@ msgstr "Διακομιστής βάσης δεδομÎνων" msgid "Finish setup" msgstr "ΟλοκλήÏωση εγκατάστασης" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "ΚυÏιακή" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "ΔευτÎÏα" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "ΤÏίτη" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "ΤετάÏτη" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Î Îμπτη" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "ΠαÏασκευή" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Σάββατο" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "ΙανουάÏιος" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "ΦεβÏουάÏιος" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "ΜάÏτιος" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "ΑπÏίλιος" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Μάϊος" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "ΙοÏνιος" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "ΙοÏλιος" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "ΑÏγουστος" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "ΣεπτÎμβÏιος" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "ΟκτώβÏιος" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "ÎοÎμβÏιος" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "ΔεκÎμβÏιος" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "ΥπηÏεσίες web υπό τον Îλεγχό σας" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "ΑποσÏνδεση" diff --git a/l10n/el/files.po b/l10n/el/files.po index d98fff41fb7..5b329a9908d 100644 --- a/l10n/el/files.po +++ b/l10n/el/files.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-23 00:05+0100\n" -"PO-Revision-Date: 2013-01-22 12:10+0000\n" -"Last-Translator: Efstathios Iosifidis <iefstathios@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -25,65 +25,46 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Αποστολή" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "Αδυναμία μετακίνησης του %s - υπάÏχει ήδη αÏχείο με αυτό το όνομα" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "Αδυναμία μετακίνησης του %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Αδυναμία μετονομασίας αÏχείου" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Δεν ανÎβηκε κάποιο αÏχείο. Άγνωστο σφάλμα" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Δεν υπάÏχει σφάλμα, το αÏχείο εστάλει επιτυχώς" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Το απεσταλμÎνο αÏχείο ξεπεÏνά την οδηγία upload_max_filesize στο php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Το αÏχείο υπεÏβαίνει την οδηγία μÎγιστου επιτÏÎµÏ€Ï„Î¿Ï Î¼ÎµÎ³Îθους \"MAX_FILE_SIZE\" που Îχει οÏιστεί στην HTML φόÏμα" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Το αÏχείο εστάλει μόνο εν μÎÏει" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "ΚανÎνα αÏχείο δεν στάλθηκε" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Λείπει ο Ï€ÏοσωÏινός φάκελος" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Αποτυχία εγγÏαφής στο δίσκο" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Δεν υπάÏχει αÏκετός διαθÎσιμος χώÏος" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Μη ÎγκυÏος φάκελος." @@ -91,151 +72,151 @@ msgstr "Μη ÎγκυÏος φάκελος." msgid "Files" msgstr "ΑÏχεία" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Διακοπή κοινής χÏήσης" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "ΔιαγÏαφή" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Μετονομασία" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} υπάÏχει ήδη" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "αντικατÎστησε" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "συνιστώμενο όνομα" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "ακÏÏωση" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "{new_name} αντικαταστάθηκε" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "αναίÏεση" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "αντικαταστάθηκε το {new_name} με {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "μη διαμοιÏασμÎνα {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "διαγÏαμμÎνα {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' είναι μη ÎγκυÏο όνομα αÏχείου." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Το όνομα αÏχείου δεν Ï€ÏÎπει να είναι κενό." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Μη ÎγκυÏο όνομα, '\\', '/', '<', '>', ':', '\"', '|', '?' και '*' δεν επιτÏÎπονται." -#: js/files.js:204 +#: 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 "Ο αποθηκευτικός χώÏος είναι σχεδόν γεμάτος ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "Η λήψη Ï€Ïοετοιμάζεται. Αυτό μποÏεί να πάÏει ÏŽÏα εάν τα αÏχεία Îχουν μεγάλο μÎγεθος." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Αδυναμία στην αποστολή του αÏχείου σας Î±Ï†Î¿Ï ÎµÎ¯Î½Î±Î¹ φάκελος ή Îχει 0 bytes" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Σφάλμα Αποστολής" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Κλείσιμο" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "ΕκκÏεμεί" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 αÏχείο ανεβαίνει" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} αÏχεία ανεβαίνουν" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Η αποστολή ακυÏώθηκε." -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Η αποστολή του αÏχείου βÏίσκεται σε εξÎλιξη. Το κλείσιμο της σελίδας θα ακυÏώσει την αποστολή." -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "Η URL δεν Ï€ÏÎπει να είναι κενή." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Μη ÎγκυÏο όνομα φακÎλου. Η χÏήση του 'ΚοινόχÏηστος' χÏησιμοποιείται από ο Owncloud" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} αÏχεία ανιχνεÏτηκαν" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "σφάλμα κατά την ανίχνευση" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Όνομα" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "ΜÎγεθος" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "ΤÏοποποιήθηκε" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 φάκελος" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} φάκελοι" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 αÏχείο" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} αÏχεία" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Αποστολή" + #: templates/admin.php:5 msgid "File handling" msgstr "ΔιαχείÏιση αÏχείων" @@ -284,32 +265,40 @@ msgstr "Φάκελος" msgid "From link" msgstr "Από σÏνδεσμο" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "ΑκÏÏωση αποστολής" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Δεν υπάÏχει τίποτα εδώ. ΑνÎβασε κάτι!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Λήψη" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Î Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿ αÏχείο Ï€Ïος αποστολή" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Τα αÏχεία σαÏώνονται, παÏακαλώ πεÏιμÎνετε" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "ΤÏÎχουσα αναζήτηση " + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/el/files_encryption.po b/l10n/el/files_encryption.po index 2ece2edcaf7..8733b3c0019 100644 --- a/l10n/el/files_encryption.po +++ b/l10n/el/files_encryption.po @@ -4,13 +4,14 @@ # # Translators: # Efstathios Iosifidis <diamond_gr@freemail.gr>, 2012. +# Efstathios Iosifidis <iefstathios@gmail.com>, 2013. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-25 00:05+0100\n" +"PO-Revision-Date: 2013-01-24 08:32+0000\n" +"Last-Translator: Efstathios Iosifidis <iefstathios@gmail.com>\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" @@ -30,19 +31,19 @@ msgstr "" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +msgstr "Αλλαγή ÏƒÏ…Î½Î¸Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï ÎºÏυπτογÏάφησης στο συνθηματικό εισόδου " #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +msgstr "ΠαÏακαλώ ελÎγξτε το συνθηματικό σας και Ï€Ïοσπαθήστε ξανά." #: js/settings-personal.js:25 msgid "Could not change your file encryption password to your login password" -msgstr "" +msgstr "Αδυναμία αλλαγής ÏƒÏ…Î½Î¸Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï ÎºÏυπτογÏάφησης αÏχείων στο συνθηματικό εισόδου σας" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Επιλογή κατάστασης κÏυπτογÏάφησης:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" diff --git a/l10n/el/files_trashbin.po b/l10n/el/files_trashbin.po new file mode 100644 index 00000000000..af301af1b40 --- /dev/null +++ b/l10n/el/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/el/settings.po b/l10n/el/settings.po index f06ddb07858..7f0a4b9c6c1 100644 --- a/l10n/el/settings.po +++ b/l10n/el/settings.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-01-18 00:03+0100\n" -"PO-Revision-Date: 2013-01-17 20:41+0000\n" -"Last-Translator: xneo1 <vagelis@cyberdest.com>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -99,7 +99,7 @@ msgstr "ΕνεÏγοποίηση" msgid "Saving..." msgstr "Αποθήκευση..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__όνομα_γλώσσας__" @@ -111,15 +111,15 @@ msgstr "Î Ïόσθεστε τη Δικιά σας ΕφαÏμογή" msgid "More Apps" msgstr "ΠεÏισσότεÏες ΕφαÏμογÎÏ‚" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "ΕπιλÎξτε μια ΕφαÏμογή" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Δείτε την σελίδα εφαÏμογών στο apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-άδεια από <span class=\"author\"></span>" @@ -168,7 +168,7 @@ msgstr "Λήψη Î ÏογÏάμματος Android" msgid "Download iOS Client" msgstr "Λήψη Î ÏογÏάμματος iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Συνθηματικό" @@ -238,11 +238,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "ΑναπτÏχθηκε από την <a href=\"http://ownCloud.org/contact\" target=\"_blank\">κοινότητα ownCloud</a>, ο <a href=\"https://github.com/owncloud\" target=\"_blank\">πηγαίος κώδικας</a> είναι υπό άδεια χÏήσης <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Όνομα" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Ομάδες" @@ -254,26 +254,38 @@ msgstr "ΔημιουÏγία" msgid "Default Storage" msgstr "Î ÏοκαθοÏισμÎνη Αποθήκευση " -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "ΑπεÏιόÏιστο" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Άλλα" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Ομάδα ΔιαχειÏιστών" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Αποθήκευση" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "ΔιαγÏαφή" diff --git a/l10n/eo/core.po b/l10n/eo/core.po index 27efa5db63f..1347e38ac50 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -20,24 +20,24 @@ msgstr "" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "La uzanto %s kunhavigis dosieron kun vi" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "La uzanto %s kunhavigis dosierujon kun vi" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "La uzanto %s kunhavigis la dosieron “%s†kun vi. Äœi elÅuteblas el tie ĉi: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -82,59 +82,135 @@ msgstr "Neniu kategorio elektiÄis por forigo." msgid "Error removing %s from favorites." msgstr "Eraro dum forigo de %s el favoratoj." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "dimanĉo" + +#: js/config.php:32 +msgid "Monday" +msgstr "lundo" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "mardo" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "merkredo" + +#: js/config.php:32 +msgid "Thursday" +msgstr "ĵaÅdo" + +#: js/config.php:32 +msgid "Friday" +msgstr "vendredo" + +#: js/config.php:32 +msgid "Saturday" +msgstr "sabato" + +#: js/config.php:33 +msgid "January" +msgstr "Januaro" + +#: js/config.php:33 +msgid "February" +msgstr "Februaro" + +#: js/config.php:33 +msgid "March" +msgstr "Marto" + +#: js/config.php:33 +msgid "April" +msgstr "Aprilo" + +#: js/config.php:33 +msgid "May" +msgstr "Majo" + +#: js/config.php:33 +msgid "June" +msgstr "Junio" + +#: js/config.php:33 +msgid "July" +msgstr "Julio" + +#: js/config.php:33 +msgid "August" +msgstr "AÅgusto" + +#: js/config.php:33 +msgid "September" +msgstr "Septembro" + +#: js/config.php:33 +msgid "October" +msgstr "Oktobro" + +#: js/config.php:33 +msgid "November" +msgstr "Novembro" + +#: js/config.php:33 +msgid "December" +msgstr "Decembro" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Agordo" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "sekundoj antaÅe" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "antaÅ 1 minuto" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "antaÅ {minutes} minutoj" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "antaÅ 1 horo" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "antaÅ {hours} horoj" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "hodiaÅ" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "hieraÅ" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "antaÅ {days} tagoj" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "lastamonate" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "antaÅ {months} monatoj" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "monatoj antaÅe" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "lastajare" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "jaroj antaÅe" @@ -164,8 +240,8 @@ msgid "The object type is not specified." msgstr "Ne indikiÄis tipo de la objekto." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Eraro" @@ -177,122 +253,141 @@ msgstr "Ne indikiÄis nomo de la aplikaĵo." msgid "The required file {file} is not installed!" msgstr "La necesa dosiero {file} ne instaliÄis!" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Kunhavigi" + +#: 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 "Eraro dum kunhavigo" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Eraro dum malkunhavigo" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Eraro dum ÅanÄo de permesoj" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Kunhavigita kun vi kaj la grupo {group} de {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Kunhavigita kun vi de {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Kunhavigi kun" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Kunhavigi per ligilo" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Protekti per pasvorto" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Pasvorto" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "RetpoÅti la ligilon al ulo" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Sendi" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Agordi limdaton" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Limdato" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Kunhavigi per retpoÅto:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Ne troviÄis gento" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Rekunhavigo ne permesatas" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Kunhavigita en {item} kun {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Malkunhavigi" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "povas redakti" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "alirkontrolo" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "krei" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "Äisdatigi" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "forigi" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "kunhavigi" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Protektita per pasvorto" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Eraro dum malagordado de limdato" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Eraro dum agordado de limdato" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Sendante..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "La retpoÅtaĵo sendiÄis" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "La pasvorto de ownCloud restariÄis." @@ -444,87 +539,11 @@ msgstr "Datumbaza gastigo" msgid "Finish setup" msgstr "Fini la instalon" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "dimanĉo" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "lundo" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "mardo" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "merkredo" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "ĵaÅdo" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "vendredo" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "sabato" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Januaro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Februaro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Marto" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Aprilo" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Majo" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Junio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Julio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "AÅgusto" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Septembro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Oktobro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Novembro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Decembro" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "TTT-servoj sub via kontrolo" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Elsaluti" diff --git a/l10n/eo/files.po b/l10n/eo/files.po index 25a028204e9..fd6b90487f7 100644 --- a/l10n/eo/files.po +++ b/l10n/eo/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-01-21 00:04+0100\n" -"PO-Revision-Date: 2013-01-20 01:38+0000\n" -"Last-Translator: Mariano <mstreet@kde.org.ar>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,65 +20,46 @@ msgstr "" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "AlÅuti" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Ne eblis movi %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Ne eblis alinomigi dosieron" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Neniu dosiero alÅutiÄis. Nekonata eraro." -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Ne estas eraro, la dosiero alÅutiÄis sukcese" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "La dosiero alÅutita superas la regulon upload_max_filesize el php.ini: " -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "La dosiero alÅutita superas la regulon MAX_FILE_SIZE, kiu estas difinita en la HTML-formularo" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "La alÅutita dosiero nur parte alÅutiÄis" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Neniu dosiero estas alÅutita" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Mankas tempa dosierujo" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Malsukcesis skribo al disko" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Ne haveblas sufiĉa spaco" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Nevalida dosierujo." @@ -86,151 +67,151 @@ msgstr "Nevalida dosierujo." msgid "Files" msgstr "Dosieroj" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Malkunhavigi" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Forigi" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Alinomigi" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} jam ekzistas" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "anstataÅigi" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "sugesti nomon" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "nuligi" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "anstataÅiÄis {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "malfari" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "anstataÅiÄis {new_name} per {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "malkunhaviÄis {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "foriÄis {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' ne estas valida dosiernomo." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Dosiernomo devas ne malpleni." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Nevalida nomo: “\\â€, “/â€, “<â€, “>â€, “:â€, “\"â€, “|â€, “?†kaj “*†ne permesatas." -#: js/files.js:204 +#: 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 "Via elÅuto pretiÄatas. Ĉi tio povas daÅri iom da tempo se la dosieroj grandas." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Ne eblis alÅuti vian dosieron ĉar Äi estas dosierujo aÅ havas 0 duumokojn" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "AlÅuta eraro" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Fermi" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Traktotaj" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 dosiero estas alÅutata" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} dosieroj alÅutatas" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "La alÅuto nuliÄis." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL ne povas esti malplena." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Nevalida dosierujnomo. Uzo de “Shared†rezervatas de Owncloud." -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} dosieroj skaniÄis" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "eraro dum skano" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nomo" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Grando" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Modifita" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 dosierujo" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} dosierujoj" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 dosiero" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} dosierujoj" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "AlÅuti" + #: templates/admin.php:5 msgid "File handling" msgstr "Dosieradministro" @@ -279,32 +260,40 @@ msgstr "Dosierujo" msgid "From link" msgstr "El ligilo" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Nuligi alÅuton" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Nenio estas ĉi tie. AlÅutu ion!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "ElÅuti" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "ElÅuto tro larÄa" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "La dosieroj, kiujn vi provas alÅuti, transpasas la maksimuman grandon por dosieralÅutoj en ĉi tiu servilo." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Dosieroj estas skanataj, bonvolu atendi." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Nuna skano" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/eo/files_trashbin.po b/l10n/eo/files_trashbin.po new file mode 100644 index 00000000000..bddacc03661 --- /dev/null +++ b/l10n/eo/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/eo/settings.po b/l10n/eo/settings.po index 2be0270b28b..41af121efe5 100644 --- a/l10n/eo/settings.po +++ b/l10n/eo/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-01-21 00:04+0100\n" -"PO-Revision-Date: 2013-01-20 01:30+0000\n" -"Last-Translator: Mariano <mstreet@kde.org.ar>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -90,7 +90,7 @@ msgstr "Kapabligi" msgid "Saving..." msgstr "Konservante..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Esperanto" @@ -102,15 +102,15 @@ msgstr "Aldonu vian aplikaĵon" msgid "More Apps" msgstr "Pli da aplikaĵoj" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Elekti aplikaĵon" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Vidu la paÄon pri aplikaĵoj ĉe apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"</span>-permesilhavigita de <span class=\"author\"></span>" @@ -159,7 +159,7 @@ msgstr "ElÅuti Android-klienton" msgid "Download iOS Client" msgstr "ElÅuti iOS-klienton" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Pasvorto" @@ -229,11 +229,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Ellaborita de la <a href=\"http://ownCloud.org/contact\" target=\"_blank\">komunumo de ownCloud</a>, la <a href=\"https://github.com/owncloud\" target=\"_blank\">fontokodo</a> publikas laÅ la permesilo <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nomo" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupoj" @@ -245,26 +245,38 @@ msgstr "Krei" msgid "Default Storage" msgstr "DefaÅlta konservejo" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Senlima" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Alia" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Grupadministranto" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Konservejo" -#: templates/users.php:133 +#: 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 "DefaÅlta" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Forigi" diff --git a/l10n/es/core.po b/l10n/es/core.po index 099b2839a0f..29d6918611b 100644 --- a/l10n/es/core.po +++ b/l10n/es/core.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Felix Liberio <felix.liberio@gmail.com>, 2013. # <javierkaiser@gmail.com>, 2012. # Javier Llorente <javier@opensuse.org>, 2012. # <juanma@kde.org.ar>, 2011-2013. @@ -18,9 +19,9 @@ 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" +"Last-Translator: felix.liberio <felix.liberio@gmail.com>\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" @@ -28,24 +29,24 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "El usuario %s ha compartido un archivo contigo" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "El usuario %s ha compartido una carpeta contigo" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "El usuario %s ha compartido el archivo \"%s\" contigo. Puedes descargarlo aquÃ: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -90,59 +91,135 @@ msgstr "No hay categorÃas seleccionadas para borrar." msgid "Error removing %s from favorites." msgstr "Error eliminando %s de los favoritos." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Domingo" + +#: js/config.php:32 +msgid "Monday" +msgstr "Lunes" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Martes" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Miércoles" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Jueves" + +#: js/config.php:32 +msgid "Friday" +msgstr "Viernes" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Sábado" + +#: js/config.php:33 +msgid "January" +msgstr "Enero" + +#: js/config.php:33 +msgid "February" +msgstr "Febrero" + +#: js/config.php:33 +msgid "March" +msgstr "Marzo" + +#: js/config.php:33 +msgid "April" +msgstr "Abril" + +#: js/config.php:33 +msgid "May" +msgstr "Mayo" + +#: js/config.php:33 +msgid "June" +msgstr "Junio" + +#: js/config.php:33 +msgid "July" +msgstr "Julio" + +#: js/config.php:33 +msgid "August" +msgstr "Agosto" + +#: js/config.php:33 +msgid "September" +msgstr "Septiembre" + +#: js/config.php:33 +msgid "October" +msgstr "Octubre" + +#: js/config.php:33 +msgid "November" +msgstr "Noviembre" + +#: js/config.php:33 +msgid "December" +msgstr "Diciembre" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Ajustes" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "hace segundos" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "hace 1 minuto" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "hace {minutes} minutos" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "Hace 1 hora" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "Hace {hours} horas" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "hoy" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "ayer" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "hace {days} dÃas" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "mes pasado" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "Hace {months} meses" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "hace meses" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "año pasado" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "hace años" @@ -172,8 +249,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Fallo" @@ -185,122 +262,141 @@ msgstr "El nombre de la app no se ha especificado." msgid "The required file {file} is not installed!" msgstr "El fichero {file} requerido, no está instalado." -#: js/share.js:124 js/share.js:594 +#: 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 +msgid "Shared" +msgstr "Compartido" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Error compartiendo" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Error descompartiendo" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Error cambiando permisos" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Compartido contigo y el grupo {group} por {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Compartido contigo por {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Compartir con" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Compartir con enlace" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Protegido por contraseña" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Contraseña" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Enviar un enlace por correo electrónico a una persona" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Enviar" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Establecer fecha de caducidad" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Fecha de caducidad" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "compartido via e-mail:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "No se encontró gente" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "No se permite compartir de nuevo" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Compartido en {item} con {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "No compartir" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "puede editar" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "control de acceso" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "crear" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "modificar" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "eliminar" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "compartir" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Protegido por contraseña" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Error al eliminar la fecha de caducidad" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Error estableciendo fecha de caducidad" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Enviando..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Correo electrónico enviado" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "La actualización ha fracasado. Por favor, informe este problema a la <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">Comunidad de ownCloud</ a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "La actualización se ha realizado correctamente. Redireccionando a ownCloud ahora." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Reiniciar contraseña de ownCloud" @@ -452,87 +548,11 @@ msgstr "Host de la base de datos" msgid "Finish setup" msgstr "Completar la instalación" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Domingo" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Lunes" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Martes" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Miércoles" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Jueves" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Viernes" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Sábado" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Enero" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Febrero" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Marzo" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Abril" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Mayo" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Junio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Julio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Agosto" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Septiembre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Octubre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Noviembre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Diciembre" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "servicios web bajo tu control" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Salir" diff --git a/l10n/es/files.po b/l10n/es/files.po index e8258968172..d927503e754 100644 --- a/l10n/es/files.po +++ b/l10n/es/files.po @@ -16,9 +16,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:53+0000\n" -"Last-Translator: Agustin Ferrario <agustin.ferrario@hotmail.com.ar>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -26,65 +26,46 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Subir" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "No se puede mover %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "No se puede renombrar el archivo" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Fallo no se subió el fichero" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "No se ha producido ningún error, el archivo se ha subido con éxito" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "El archivo que intentas subir sobrepasa el tamaño definido por la variable upload_max_filesize en php.ini" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "El archivo que intentas subir sobrepasa el tamaño definido por la variable MAX_FILE_SIZE especificada en el formulario HTML" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "El archivo que intentas subir solo se subió parcialmente" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "No se ha subido ningún archivo" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Falta un directorio temporal" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "La escritura en disco ha fallado" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "No hay suficiente espacio disponible" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Directorio invalido." @@ -92,151 +73,151 @@ msgstr "Directorio invalido." msgid "Files" msgstr "Archivos" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Dejar de compartir" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Eliminar" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Renombrar" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} ya existe" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "reemplazar" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "sugerir nombre" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "reemplazado {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "deshacer" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "reemplazado {new_name} con {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "{files} descompartidos" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "{files} eliminados" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' es un nombre de archivo inválido." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "El nombre de archivo no puede estar vacÃo." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Nombre Invalido, \"\\\", \"/\", \"<\", \">\", \":\", \"\", \"|\" \"?\" y \"*\" no están permitidos " -#: js/files.js:204 +#: 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 "Tu descarga esta siendo preparada. Esto puede tardar algun tiempo si los archivos son muy grandes." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "No ha sido posible subir tu archivo porque es un directorio o tiene 0 bytes" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Error al subir el archivo" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "cerrrar" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Pendiente" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "subiendo 1 archivo" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "Subiendo {count} archivos" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Subida cancelada." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "La URL no puede estar vacÃa." -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "{count} archivos escaneados" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "error escaneando" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nombre" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Tamaño" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Modificado" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 carpeta" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} carpetas" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 archivo" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} archivos" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Subir" + #: templates/admin.php:5 msgid "File handling" msgstr "Tratamiento de archivos" @@ -285,32 +266,40 @@ msgstr "Carpeta" msgid "From link" msgstr "Desde el enlace" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Cancelar subida" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Aquà no hay nada. ¡Sube algo!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Descargar" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "El archivo es demasiado grande" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Los archivos que estás intentando subir sobrepasan el tamaño máximo permitido por este servidor." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Se están escaneando los archivos, por favor espere." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Ahora escaneando" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/es/files_encryption.po b/l10n/es/files_encryption.po index c58884a970d..fa6fcc6a7b7 100644 --- a/l10n/es/files_encryption.po +++ b/l10n/es/files_encryption.po @@ -3,14 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Felix Liberio <felix.liberio@gmail.com>, 2013. # <juanma@kde.org.ar>, 2012. +# Raul Fernandez Garcia <raulfg3@gmail.com>, 2013. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 14:50+0000\n" +"Last-Translator: felix.liberio <felix.liberio@gmail.com>\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,53 +24,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "Cambiar a cifrado del lado del cliente" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +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 "" +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 "" +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:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Elegir el modo de cifrado:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Cifrado del lado del Cliente ( es el más seguro, pero hace que sea imposible acceder a sus datos desde la interfaz web)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Cifrado del lado del Servidor (le permite acceder a sus archivos desde la interfaz web y el cliente de escritorio)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Ninguno (ningún cifrado en absoluto)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Importante: Una vez que haya seleccionado un modo de cifrado no existe forma de cambiarlo de nuevo" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "EspecÃfico del usuario (dejar que el usuario decida)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/es/files_trashbin.po b/l10n/es/files_trashbin.po new file mode 100644 index 00000000000..2b25413fcc2 --- /dev/null +++ b/l10n/es/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/es/settings.po b/l10n/es/settings.po index d39042253ff..310b9e21f5d 100644 --- a/l10n/es/settings.po +++ b/l10n/es/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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" @@ -99,7 +99,7 @@ msgstr "Activar" msgid "Saving..." msgstr "Guardando..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Castellano" @@ -111,15 +111,15 @@ msgstr "Añade tu aplicación" msgid "More Apps" msgstr "Más aplicaciones" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Seleccionar una aplicación" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Echa un vistazo a la web de aplicaciones apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licenciado por <span class=\"author\"></span>" @@ -168,7 +168,7 @@ msgstr "Descargar cliente para android" msgid "Download iOS Client" msgstr "Descargar cliente para iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Contraseña" @@ -238,11 +238,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Desarrollado por la <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunidad ownCloud</a>, el <a href=\"https://github.com/owncloud\" target=\"_blank\">código fuente</a> está bajo licencia <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nombre" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupos" @@ -254,26 +254,38 @@ msgstr "Crear" msgid "Default Storage" msgstr "Almacenamiento Predeterminado" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Ilimitado" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Otro" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Grupo admin" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Alamacenamiento" -#: templates/users.php:133 +#: 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 "Predeterminado" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Eliminar" diff --git a/l10n/es_AR/core.po b/l10n/es_AR/core.po index c38985419c0..71d928cfc40 100644 --- a/l10n/es_AR/core.po +++ b/l10n/es_AR/core.po @@ -3,15 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# CJTess <claudio.tessone@gmail.com>, 2013. # <claudio.tessone@gmail.com>, 2012-2013. # <javierkaiser@gmail.com>, 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" +"Last-Translator: cjtess <claudio.tessone@gmail.com>\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,24 +20,24 @@ msgstr "" "Language: es_AR\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "El usurario %s compartió un archivo con vos." -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "El usurario %s compartió una carpeta con vos." -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "El usuario %s compartió el archivo \"%s\" con vos. Está disponible para su descarga aquÃ: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -81,59 +82,135 @@ msgstr "No hay categorÃas seleccionadas para borrar." msgid "Error removing %s from favorites." msgstr "Error al remover %s de favoritos. " -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Domingo" + +#: js/config.php:32 +msgid "Monday" +msgstr "Lunes" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Martes" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Miércoles" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Jueves" + +#: js/config.php:32 +msgid "Friday" +msgstr "Viernes" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Sábado" + +#: js/config.php:33 +msgid "January" +msgstr "Enero" + +#: js/config.php:33 +msgid "February" +msgstr "Febrero" + +#: js/config.php:33 +msgid "March" +msgstr "Marzo" + +#: js/config.php:33 +msgid "April" +msgstr "Abril" + +#: js/config.php:33 +msgid "May" +msgstr "Mayo" + +#: js/config.php:33 +msgid "June" +msgstr "Junio" + +#: js/config.php:33 +msgid "July" +msgstr "Julio" + +#: js/config.php:33 +msgid "August" +msgstr "Agosto" + +#: js/config.php:33 +msgid "September" +msgstr "Septiembre" + +#: js/config.php:33 +msgid "October" +msgstr "Octubre" + +#: js/config.php:33 +msgid "November" +msgstr "Noviembre" + +#: js/config.php:33 +msgid "December" +msgstr "Diciembre" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Ajustes" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "segundos atrás" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "hace 1 minuto" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "hace {minutes} minutos" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "Hace 1 hora" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} horas atrás" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "hoy" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "ayer" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "hace {days} dÃas" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "el mes pasado" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} meses atrás" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "meses atrás" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "el año pasado" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "años atrás" @@ -163,8 +240,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Error" @@ -176,122 +253,141 @@ 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:124 js/share.js:594 +#: 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 +msgid "Shared" +msgstr "Compartido" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Error al compartir" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Error en el procedimiento de " -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Error al cambiar permisos" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Compartido con vos y el grupo {group} por {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Compartido con vos por {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Compartir con" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Compartir con link" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Proteger con contraseña " -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Contraseña" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Enviar el link por e-mail." -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Enviar" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Asignar fecha de vencimiento" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Fecha de vencimiento" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "compartido a través de e-mail:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "No se encontraron usuarios" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "No se permite volver a compartir" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Compartido en {item} con {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Remover compartir" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "puede editar" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "control de acceso" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "crear" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "actualizar" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "borrar" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "compartir" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Protegido por contraseña" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Error al remover la fecha de caducidad" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Error al asignar fecha de vencimiento" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Enviando..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Email enviado" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "La actualización no pudo ser completada. Por favor, reportá el inconveniente a la comunidad <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud</a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "La actualización fue exitosa. Estás siendo redirigido a ownCloud." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Restablecer contraseña de ownCloud" @@ -443,87 +539,11 @@ msgstr "Host de la base de datos" msgid "Finish setup" msgstr "Completar la instalación" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Domingo" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Lunes" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Martes" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Miércoles" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Jueves" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Viernes" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Sábado" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Enero" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Febrero" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Marzo" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Abril" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Mayo" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Junio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Julio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Agosto" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Septiembre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Octubre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Noviembre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Diciembre" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "servicios web sobre los que tenés control" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Cerrar la sesión" diff --git a/l10n/es_AR/files.po b/l10n/es_AR/files.po index 4f9ef6d1b56..dd36d78dc3f 100644 --- a/l10n/es_AR/files.po +++ b/l10n/es_AR/files.po @@ -4,14 +4,15 @@ # # Translators: # Agustin Ferrario <agustin.ferrario@hotmail.com.ar>, 2012-2013. +# CJTess <claudio.tessone@gmail.com>, 2013. # <claudio.tessone@gmail.com>, 2012-2013. 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:53+0000\n" -"Last-Translator: Agustin Ferrario <agustin.ferrario@hotmail.com.ar>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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,65 +20,46 @@ msgstr "" "Language: es_AR\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Subir" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "No se pudo mover %s " - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "No fue posible cambiar el nombre al archivo" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "El archivo no fue subido. Error desconocido" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "No se han producido errores, el archivo se ha subido con éxito" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "El archivo que intentás subir excede el tamaño definido por upload_max_filesize en el php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "El archivo que intentás subir sobrepasa el tamaño definido por la variable MAX_FILE_SIZE especificada en el formulario HTML" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "El archivo que intentás subir solo se subió parcialmente" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "El archivo no fue subido" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Falta un directorio temporal" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Error al escribir en el disco" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "No hay suficiente espacio disponible" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Directorio invalido." @@ -85,151 +67,151 @@ msgstr "Directorio invalido." msgid "Files" msgstr "Archivos" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Dejar de compartir" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Borrar" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Cambiar nombre" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} ya existe" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "reemplazar" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "sugerir nombre" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "reemplazado {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "deshacer" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "reemplazado {new_name} con {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "{files} se dejaron de compartir" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "{files} borrados" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' es un nombre de archivo inválido." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "El nombre del archivo no puede quedar vacÃo." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Nombre invalido, '\\', '/', '<', '>', ':', '\"', '|', '?' y '*' no están permitidos." -#: js/files.js:204 +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "El almacenamiento está lleno, los archivos no se pueden seguir actualizando ni sincronizando" + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "El almacenamiento está casi lleno ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "Tu descarga esta siendo preparada. Esto puede tardar algun tiempo si los archivos son muy grandes." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "No fue posible subir el archivo porque es un directorio o porque su tamaño es 0 bytes" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Error al subir el archivo" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Cerrar" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Pendiente" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "Subiendo 1 archivo" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "Subiendo {count} archivos" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "La subida fue cancelada" -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "La URL no puede estar vacÃa" -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "{count} archivos escaneados" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "error mientras se escaneaba" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nombre" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Tamaño" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Modificado" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 directorio" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} directorios" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 archivo" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} archivos" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Subir" + #: templates/admin.php:5 msgid "File handling" msgstr "Tratamiento de archivos" @@ -278,32 +260,40 @@ msgstr "Carpeta" msgid "From link" msgstr "Desde enlace" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Cancelar subida" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "No hay nada. ¡Subà contenido!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Descargar" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "El archivo es demasiado grande" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Los archivos que intentás subir sobrepasan el tamaño máximo " -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Se están escaneando los archivos, por favor esperá." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Escaneo actual" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/es_AR/files_encryption.po b/l10n/es_AR/files_encryption.po index 63c4ec00584..11ac9c0c6d7 100644 --- a/l10n/es_AR/files_encryption.po +++ b/l10n/es_AR/files_encryption.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# CJTess <claudio.tessone@gmail.com>, 2013. # <claudio.tessone@gmail.com>, 2012. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 16:11+0000\n" +"Last-Translator: cjtess <claudio.tessone@gmail.com>\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" @@ -22,53 +23,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "Cambiado a encriptación por parte del cliente" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +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 "" +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 "" +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:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Elegir el modo de encriptación:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Encriptación por parte del cliente (es el modo más seguro, pero hace que sea imposible acceder a tus datos desde la interfaz web)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Encriptación por parte del servidor (te permite acceder a tus archivos desde la interfaz web y desde el cliente de escritorio)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Ninguno (ninguna encriptación en absoluto)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Importante: Una vez que haya seleccionado un modo de encriptación, no existe forma de cambiarlo nuevamente" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "EspecÃfico por usuario (deja que el usuario decida)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/es_AR/files_trashbin.po b/l10n/es_AR/files_trashbin.po new file mode 100644 index 00000000000..d3f144da177 --- /dev/null +++ b/l10n/es_AR/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_AR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/es_AR/settings.po b/l10n/es_AR/settings.po index 0ebdce38b58..d9b6327b4db 100644 --- a/l10n/es_AR/settings.po +++ b/l10n/es_AR/settings.po @@ -4,13 +4,14 @@ # # Translators: # Agustin Ferrario <agustin.ferrario@hotmail.com.ar>, 2012. +# CJTess <claudio.tessone@gmail.com>, 2013. # <claudio.tessone@gmail.com>, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" @@ -89,7 +90,7 @@ msgstr "Activar" msgid "Saving..." msgstr "Guardando..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Castellano (Argentina)" @@ -101,15 +102,15 @@ msgstr "Añadà tu aplicación" msgid "More Apps" msgstr "Más aplicaciones" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Seleccionar una aplicación" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Mirá la web de aplicaciones apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licenciado por <span class=\"author\">" @@ -123,7 +124,7 @@ msgstr "Documentación de Administrador" #: templates/help.php:6 msgid "Online Documentation" -msgstr "Documentación en linea" +msgstr "Documentación en lÃnea" #: templates/help.php:7 msgid "Forum" @@ -158,7 +159,7 @@ msgstr "Descargar cliente de Android" msgid "Download iOS Client" msgstr "Descargar cliente de iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Contraseña" @@ -228,11 +229,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Desarrollado por la <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunidad ownCloud</a>, el <a href=\"https://github.com/owncloud\" target=\"_blank\">código fuente</a> está bajo licencia <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nombre" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "Nombre de " -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupos" @@ -244,26 +245,38 @@ msgstr "Crear" msgid "Default Storage" msgstr "Almacenamiento Predeterminado" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Ilimitado" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Otro" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "Nombre a mostrar" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Grupo Administrador" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Almacenamiento" -#: templates/users.php:133 +#: 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 "Predeterminado" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Borrar" diff --git a/l10n/es_AR/user_ldap.po b/l10n/es_AR/user_ldap.po index a3b11101f5b..bd7fb599517 100644 --- a/l10n/es_AR/user_ldap.po +++ b/l10n/es_AR/user_ldap.po @@ -4,14 +4,15 @@ # # Translators: # Agustin Ferrario <agustin.ferrario@hotmail.com.ar>, 2013. +# CJTess <claudio.tessone@gmail.com>, 2013. # <claudio.tessone@gmail.com>, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-16 00:19+0100\n" -"PO-Revision-Date: 2013-01-15 23:20+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 16:22+0000\n" +"Last-Translator: cjtess <claudio.tessone@gmail.com>\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" @@ -30,7 +31,7 @@ msgstr "<b>Advertencia:</b> Los Apps user_ldap y user_webdavauth son incompatibl msgid "" "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not " "work. Please ask your system administrator to install it." -msgstr "" +msgstr "<b>Atención:</b> El módulo PHP LDAP no está instalado, este elemento no va a funcionar. Por favor, pedile al administrador que lo instale." #: templates/settings.php:15 msgid "Host" @@ -47,7 +48,7 @@ msgstr "DN base" #: templates/settings.php:16 msgid "One Base DN per line" -msgstr "" +msgstr "Una DN base por lÃnea" #: templates/settings.php:16 msgid "You can specify Base DN for users and groups in the Advanced tab" @@ -122,7 +123,7 @@ msgstr "Ãrbol base de usuario" #: templates/settings.php:25 msgid "One User Base DN per line" -msgstr "" +msgstr "Una DN base de usuario por lÃnea" #: templates/settings.php:26 msgid "Base Group Tree" @@ -130,7 +131,7 @@ msgstr "Ãrbol base de grupo" #: templates/settings.php:26 msgid "One Group Base DN per line" -msgstr "" +msgstr "Una DN base de grupo por lÃnea" #: templates/settings.php:27 msgid "Group-Member association" diff --git a/l10n/es_AR/user_webdavauth.po b/l10n/es_AR/user_webdavauth.po index 429680ee8c6..6c88cac3fd0 100644 --- a/l10n/es_AR/user_webdavauth.po +++ b/l10n/es_AR/user_webdavauth.po @@ -4,14 +4,15 @@ # # Translators: # Agustin Ferrario <agustin.ferrario@hotmail.com.ar>, 2012. +# CJTess <claudio.tessone@gmail.com>, 2013. # <claudio.tessone@gmail.com>, 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 16:22+0000\n" +"Last-Translator: cjtess <claudio.tessone@gmail.com>\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" @@ -21,7 +22,7 @@ msgstr "" #: templates/settings.php:3 msgid "WebDAV Authentication" -msgstr "" +msgstr "Autenticación de WevDAV" #: templates/settings.php:4 msgid "URL: http://" @@ -32,4 +33,4 @@ 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 "onwCloud enviará las credenciales de usuario a esta URL. Este complemento verifica la respuesta e interpretará los códigos de respuesta HTTP 401 y 403 como credenciales inválidas y todas las otras respuestas como credenciales válidas." diff --git a/l10n/et_EE/core.po b/l10n/et_EE/core.po index ba615076133..2e7a0ddd0de 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -18,24 +18,24 @@ msgstr "" "Language: et_EE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -80,59 +80,135 @@ msgstr "Kustutamiseks pole kategooriat valitud." msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Pühapäev" + +#: js/config.php:32 +msgid "Monday" +msgstr "Esmaspäev" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Teisipäev" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Kolmapäev" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Neljapäev" + +#: js/config.php:32 +msgid "Friday" +msgstr "Reede" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Laupäev" + +#: js/config.php:33 +msgid "January" +msgstr "Jaanuar" + +#: js/config.php:33 +msgid "February" +msgstr "Veebruar" + +#: js/config.php:33 +msgid "March" +msgstr "Märts" + +#: js/config.php:33 +msgid "April" +msgstr "Aprill" + +#: js/config.php:33 +msgid "May" +msgstr "Mai" + +#: js/config.php:33 +msgid "June" +msgstr "Juuni" + +#: js/config.php:33 +msgid "July" +msgstr "Juuli" + +#: js/config.php:33 +msgid "August" +msgstr "August" + +#: js/config.php:33 +msgid "September" +msgstr "September" + +#: js/config.php:33 +msgid "October" +msgstr "Oktoober" + +#: js/config.php:33 +msgid "November" +msgstr "November" + +#: js/config.php:33 +msgid "December" +msgstr "Detsember" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Seaded" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "sekundit tagasi" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 minut tagasi" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} minutit tagasi" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "täna" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "eile" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} päeva tagasi" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "viimasel kuul" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "kuu tagasi" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "viimasel aastal" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "aastat tagasi" @@ -162,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Viga" @@ -175,122 +251,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Jaga" + +#: 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 "Viga jagamisel" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Viga jagamise lõpetamisel" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Viga õiguste muutmisel" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Sinuga jagas {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Jaga" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Jaga lingiga" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Parooliga kaitstud" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Parool" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Määra aegumise kuupäev" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Aegumise kuupäev" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Jaga e-postiga:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Ühtegi inimest ei leitud" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Edasijagamine pole lubatud" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Lõpeta jagamine" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "saab muuta" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "ligipääsukontroll" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "loo" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "uuenda" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "kustuta" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "jaga" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Parooliga kaitstud" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Viga aegumise kuupäeva eemaldamisel" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Viga aegumise kuupäeva määramisel" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ownCloud parooli taastamine" @@ -442,87 +537,11 @@ msgstr "Andmebaasi host" msgid "Finish setup" msgstr "Lõpeta seadistamine" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Pühapäev" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Esmaspäev" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Teisipäev" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Kolmapäev" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Neljapäev" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Reede" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Laupäev" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Jaanuar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Veebruar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Märts" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Aprill" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Mai" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Juuni" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Juuli" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "August" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "September" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Oktoober" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "November" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Detsember" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "veebiteenused sinu kontrolli all" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Logi välja" diff --git a/l10n/et_EE/files.po b/l10n/et_EE/files.po index 08842493045..1c693682ee7 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -19,65 +19,46 @@ msgstr "" "Language: et_EE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Lae üles" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Ühtegi faili ei laetud üles. Tundmatu viga" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Ühtegi viga pole, fail on üles laetud" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Üles laetud faili suurus ületab HTML vormis määratud upload_max_filesize suuruse" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Fail laeti üles ainult osaliselt" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Ühtegi faili ei laetud üles" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Ajutiste failide kaust puudub" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Kettale kirjutamine ebaõnnestus" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -85,151 +66,151 @@ msgstr "" msgid "Files" msgstr "Failid" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Lõpeta jagamine" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Kustuta" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "ümber" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} on juba olemas" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "asenda" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "soovita nime" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "loobu" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "asendatud nimega {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "tagasi" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "asendas nime {old_name} nimega {new_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "jagamata {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "kustutatud {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Vigane nimi, '\\', '/', '<', '>', ':', '\"', '|', '?' ja '*' pole lubatud." -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Sinu faili üleslaadimine ebaõnnestus, kuna see on kaust või selle suurus on 0 baiti" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Üleslaadimise viga" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Sulge" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Ootel" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 faili üleslaadimisel" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} faili üleslaadimist" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Üleslaadimine tühistati." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL ei saa olla tühi." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} faili skännitud" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "viga skännimisel" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nimi" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Suurus" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Muudetud" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 kaust" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} kausta" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 fail" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} faili" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Lae üles" + #: templates/admin.php:5 msgid "File handling" msgstr "Failide käsitlemine" @@ -278,32 +259,40 @@ msgstr "Kaust" msgid "From link" msgstr "Allikast" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Tühista üleslaadimine" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Siin pole midagi. Lae midagi üles!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Lae alla" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Üleslaadimine on liiga suur" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Failid, mida sa proovid üles laadida, ületab serveri poolt üleslaetavatele failidele määratud maksimaalse suuruse." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Faile skannitakse, palun oota" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Praegune skannimine" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/et_EE/files_trashbin.po b/l10n/et_EE/files_trashbin.po new file mode 100644 index 00000000000..f50b6ff0747 --- /dev/null +++ b/l10n/et_EE/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et_EE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/et_EE/settings.po b/l10n/et_EE/settings.po index 751dc61daf4..3be449a7d2d 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -89,7 +89,7 @@ msgstr "Lülita sisse" msgid "Saving..." msgstr "Salvestamine..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Eesti" @@ -101,15 +101,15 @@ msgstr "Lisa oma rakendus" msgid "More Apps" msgstr "Veel rakendusi" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Vali programm" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Vaata rakenduste lehte aadressil apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-litsenseeritud <span class=\"author\"></span>" @@ -158,7 +158,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Parool" @@ -228,11 +228,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nimi" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupid" @@ -244,26 +244,38 @@ msgstr "Lisa" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Muu" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Grupi admin" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Kustuta" diff --git a/l10n/eu/core.po b/l10n/eu/core.po index 74900de6d94..e4ffe9890e0 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 00:07+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: asieriko <asieriko@gmail.com>\n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -21,24 +21,24 @@ msgstr "" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "%s erabiltzaileak zurekin fitxategi bat partekatu du " -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "%s erabiltzaileak zurekin karpeta bat partekatu du " -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "%s erabiltzaileak \"%s\" fitxategia zurekin partekatu du. Hemen duzu eskuragarri: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -83,59 +83,135 @@ msgstr "Ez da ezabatzeko kategoriarik hautatu." msgid "Error removing %s from favorites." msgstr "Errorea gertatu da %s gogokoetatik ezabatzean." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Igandea" + +#: js/config.php:32 +msgid "Monday" +msgstr "Astelehena" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Asteartea" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Asteazkena" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Osteguna" + +#: js/config.php:32 +msgid "Friday" +msgstr "Ostirala" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Larunbata" + +#: js/config.php:33 +msgid "January" +msgstr "Urtarrila" + +#: js/config.php:33 +msgid "February" +msgstr "Otsaila" + +#: js/config.php:33 +msgid "March" +msgstr "Martxoa" + +#: js/config.php:33 +msgid "April" +msgstr "Apirila" + +#: js/config.php:33 +msgid "May" +msgstr "Maiatza" + +#: js/config.php:33 +msgid "June" +msgstr "Ekaina" + +#: js/config.php:33 +msgid "July" +msgstr "Uztaila" + +#: js/config.php:33 +msgid "August" +msgstr "Abuztua" + +#: js/config.php:33 +msgid "September" +msgstr "Iraila" + +#: js/config.php:33 +msgid "October" +msgstr "Urria" + +#: js/config.php:33 +msgid "November" +msgstr "Azaroa" + +#: js/config.php:33 +msgid "December" +msgstr "Abendua" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Ezarpenak" -#: js/js.js:706 +#: js/js.js:762 msgid "seconds ago" msgstr "segundu" -#: js/js.js:707 +#: js/js.js:763 msgid "1 minute ago" msgstr "orain dela minutu 1" -#: js/js.js:708 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "orain dela {minutes} minutu" -#: js/js.js:709 +#: js/js.js:765 msgid "1 hour ago" msgstr "orain dela ordu bat" -#: js/js.js:710 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "orain dela {hours} ordu" -#: js/js.js:711 +#: js/js.js:767 msgid "today" msgstr "gaur" -#: js/js.js:712 +#: js/js.js:768 msgid "yesterday" msgstr "atzo" -#: js/js.js:713 +#: js/js.js:769 msgid "{days} days ago" msgstr "orain dela {days} egun" -#: js/js.js:714 +#: js/js.js:770 msgid "last month" msgstr "joan den hilabetean" -#: js/js.js:715 +#: js/js.js:771 msgid "{months} months ago" msgstr "orain dela {months} hilabete" -#: js/js.js:716 +#: js/js.js:772 msgid "months ago" msgstr "hilabete" -#: js/js.js:717 +#: js/js.js:773 msgid "last year" msgstr "joan den urtean" -#: js/js.js:718 +#: js/js.js:774 msgid "years ago" msgstr "urte" @@ -165,8 +241,8 @@ msgid "The object type is not specified." msgstr "Objetu mota ez dago zehaztuta." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Errorea" @@ -178,122 +254,141 @@ msgstr "App izena ez dago zehaztuta." msgid "The required file {file} is not installed!" msgstr "Beharrezkoa den {file} fitxategia ez dago instalatuta!" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Elkarbanatu" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Shared" +msgstr "Elkarbanatuta" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Errore bat egon da elkarbanatzean" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Errore bat egon da elkarbanaketa desegitean" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Errore bat egon da baimenak aldatzean" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "{owner}-k zu eta {group} taldearekin partekatuta" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "{owner}-k zurekin partekatuta" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Elkarbanatu honekin" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Elkarbanatu lotura batekin" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Babestu pasahitzarekin" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Pasahitza" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Postaz bidali lotura " -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Bidali" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Ezarri muga data" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Muga data" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Elkarbanatu eposta bidez:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Ez da inor aurkitu" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Berriz elkarbanatzea ez dago baimendua" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "{user}ekin {item}-n partekatuta" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Ez elkarbanatu" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "editatu dezake" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "sarrera kontrola" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "sortu" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "eguneratu" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "ezabatu" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "elkarbanatu" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Pasahitzarekin babestuta" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Errorea izan da muga data kentzean" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Errore bat egon da muga data ezartzean" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Bidaltzen ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Eposta bidalia" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "Eguneraketa ez da ongi egin. Mesedez egin arazoaren txosten bat <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud komunitatearentzako</a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "Eguneraketa ongi egin da. Orain zure ownClouderea berbideratua izango zara." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud-en pasahitza berrezarri" @@ -445,87 +540,11 @@ msgstr "Datubasearen hostalaria" msgid "Finish setup" msgstr "Bukatu konfigurazioa" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Igandea" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Astelehena" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Asteartea" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Asteazkena" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Osteguna" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Ostirala" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Larunbata" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Urtarrila" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Otsaila" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Martxoa" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Apirila" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Maiatza" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Ekaina" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Uztaila" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Abuztua" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Iraila" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Urria" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Azaroa" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Abendua" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "web zerbitzuak zure kontrolpean" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Saioa bukatu" diff --git a/l10n/eu/files.po b/l10n/eu/files.po index ac12e78e77e..e9705b048c2 100644 --- a/l10n/eu/files.po +++ b/l10n/eu/files.po @@ -6,13 +6,13 @@ # <asieriko@gmail.com>, 2013. # <asieriko@gmail.com>, 2012. # Asier Urio Larrea <asieriko@gmail.com>, 2011. -# Piarres Beobide <pi@beobide.net>, 2012. +# Piarres Beobide <pi@beobide.net>, 2012-2013. 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 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -21,65 +21,46 @@ msgstr "" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Igo" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Ezin dira fitxategiak mugitu %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Ezin izan da fitxategia berrizendatu" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Ez da fitxategirik igo. Errore ezezaguna" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Ez da arazorik izan, fitxategia ongi igo da" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Igotako fitxategiak php.ini fitxategian ezarritako upload_max_filesize muga gainditu du:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Igotako fitxategiaren tamaina HTML inprimakiko MAX_FILESIZE direktiban adierazitakoa baino handiagoa da" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Igotako fitxategiaren zati bat baino gehiago ez da igo" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Ez da fitxategirik igo" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Aldi baterako karpeta falta da" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Errore bat izan da diskoan idazterakoan" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Ez dago leku nahikorik." -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Baliogabeko karpeta." @@ -87,151 +68,151 @@ msgstr "Baliogabeko karpeta." msgid "Files" msgstr "Fitxategiak" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Ez elkarbanatu" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Ezabatu" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Berrizendatu" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} dagoeneko existitzen da" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "ordeztu" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "aholkatu izena" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "ezeztatu" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "ordezkatua {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "desegin" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr " {new_name}-k {old_name} ordezkatu du" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "elkarbanaketa utzita {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "ezabatuta {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' ez da fitxategi izen baliogarria." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Fitxategi izena ezin da hutsa izan." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "IZen aliogabea, '\\', '/', '<', '>', ':', '\"', '|', '?' eta '*' ez daude baimenduta." -#: js/files.js:204 +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "Zure biltegiratzea beterik dago, ezingo duzu aurrerantzean fitxategirik igo edo sinkronizatu!" + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "Zure biltegiratzea nahiko beterik dago (%{usedSpacePercent})" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." -msgstr "" +msgstr "Zure deskarga prestatu egin behar da. Denbora bat har lezake fitxategiak handiak badira. " -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Ezin da zure fitxategia igo, karpeta bat da edo 0 byt ditu" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Igotzean errore bat suertatu da" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Itxi" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Zain" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "fitxategi 1 igotzen" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} fitxategi igotzen" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Igoera ezeztatuta" -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URLa ezin da hutsik egon." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Baliogabeako karpeta izena. 'Shared' izena Owncloudek erreserbatzen du" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} fitxategi eskaneatuta" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "errore bat egon da eskaneatzen zen bitartean" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Izena" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Tamaina" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Aldatuta" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "karpeta bat" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} karpeta" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "fitxategi bat" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} fitxategi" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Igo" + #: templates/admin.php:5 msgid "File handling" msgstr "Fitxategien kudeaketa" @@ -280,32 +261,40 @@ msgstr "Karpeta" msgid "From link" msgstr "Estekatik" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Ezeztatu igoera" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Ez dago ezer. Igo zerbait!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Deskargatu" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Igotakoa handiegia da" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Igotzen saiatzen ari zaren fitxategiak zerbitzari honek igotzeko onartzen duena baino handiagoak dira." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Fitxategiak eskaneatzen ari da, itxoin mezedez." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Orain eskaneatzen ari da" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/eu/files_encryption.po b/l10n/eu/files_encryption.po index deacd189bf8..4e6b0c18e04 100644 --- a/l10n/eu/files_encryption.po +++ b/l10n/eu/files_encryption.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <asieriko@gmail.com>, 2013. # <asieriko@gmail.com>, 2012. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-30 00:23+0100\n" +"PO-Revision-Date: 2013-01-29 18:40+0000\n" +"Last-Translator: asieriko <asieriko@gmail.com>\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" @@ -34,7 +35,7 @@ msgstr "" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +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" @@ -42,7 +43,7 @@ msgstr "" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Hautatu enkriptazio modua:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" @@ -58,7 +59,7 @@ msgstr "" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Bat ere ez (enkriptaziorik gabe)" #: templates/settings.php:10 msgid "" @@ -68,7 +69,7 @@ msgstr "" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "Erabiltzaileak zehaztuta (utzi erabiltzaileari hautatzen)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/eu/files_trashbin.po b/l10n/eu/files_trashbin.po new file mode 100644 index 00000000000..fe82ebdbfc8 --- /dev/null +++ b/l10n/eu/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/eu/settings.po b/l10n/eu/settings.po index dff5792f80e..e29eaae12e8 100644 --- a/l10n/eu/settings.po +++ b/l10n/eu/settings.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-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 00:06+0000\n" -"Last-Translator: asieriko <asieriko@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -91,7 +91,7 @@ msgstr "Gaitu" msgid "Saving..." msgstr "Gordetzen..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Euskera" @@ -103,15 +103,15 @@ msgstr "Gehitu zure aplikazioa" msgid "More Apps" msgstr "App gehiago" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Aukeratu programa bat" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Ikusi programen orria apps.owncloud.com en" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-lizentziatua <span class=\"author\"></span>" @@ -160,7 +160,7 @@ msgstr "Deskargatu Android bezeroa" msgid "Download iOS Client" msgstr "Deskargatu iOS bezeroa" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Pasahitza" @@ -230,11 +230,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "<a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud komunitateak</a> garatuta, <a href=\"https://github.com/owncloud\" target=\"_blank\">itubruru kodea</a><a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr> lizentziarekin banatzen da</a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Izena" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "Sarrera Izena" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Taldeak" @@ -246,26 +246,38 @@ msgstr "Sortu" msgid "Default Storage" msgstr "Lehenetsitako Biltegiratzea" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Mugarik gabe" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Besteak" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "Bistaratze Izena" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Talde administradorea" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Biltegiratzea" -#: templates/users.php:133 +#: 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 "Lehenetsia" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Ezabatu" diff --git a/l10n/fa/core.po b/l10n/fa/core.po index 363c28a30ab..7790d77f9ba 100644 --- a/l10n/fa/core.po +++ b/l10n/fa/core.po @@ -4,12 +4,13 @@ # # Translators: # Hossein nag <h.sname@yahoo.com>, 2012. +# mahdi Kereshteh <miki_mika1362@yahoo.com>, 2013. 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 08:21+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -18,33 +19,33 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" -msgstr "" +msgstr "کاربر %s یک پرونده را با شما به اشتراک گذاشته است." -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" -msgstr "" +msgstr "کاربر %s یک پوشه را با شما به اشتراک گذاشته است." -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" -msgstr "" +msgstr "کاربر %s پرونده \"%s\" را با شما به اشتراک گذاشته است. پرونده برای دانلود اینجاست : %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " "here: %s" -msgstr "" +msgstr "کاربر %s پوشه \"%s\" را با شما به اشتراک گذاشته است. پرونده برای دانلود اینجاست : %s" #: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 msgid "Category type not provided." -msgstr "" +msgstr "نوع دسته بندی ارائه نشده است." #: ajax/vcategories/add.php:30 msgid "No category to add?" @@ -58,18 +59,18 @@ msgstr "این گروه از قبل اضاÙÙ‡ شده" #: ajax/vcategories/favorites.php:24 #: ajax/vcategories/removeFromFavorites.php:26 msgid "Object type not provided." -msgstr "" +msgstr "نوع Ø´ÛŒ ارائه نشده است." #: ajax/vcategories/addToFavorites.php:30 #: ajax/vcategories/removeFromFavorites.php:30 #, php-format msgid "%s ID not provided." -msgstr "" +msgstr "شناسه %s ارائه نشده است." #: ajax/vcategories/addToFavorites.php:35 #, php-format msgid "Error adding %s to favorites." -msgstr "" +msgstr "خطای اضاÙÙ‡ کردن %s به علاقه مندی ها." #: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 msgid "No categories selected for deletion." @@ -78,67 +79,143 @@ msgstr "هیج دسته ای برای پاک شدن انتخاب نشده است #: ajax/vcategories/removeFromFavorites.php:35 #, php-format msgid "Error removing %s from favorites." -msgstr "" +msgstr "خطای پاک کردن %s از علاقه مندی ها." + +#: js/config.php:32 +msgid "Sunday" +msgstr "یکشنبه" + +#: js/config.php:32 +msgid "Monday" +msgstr "دوشنبه" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "تنظیمات" -#: js/js.js:706 +#: js/js.js:762 msgid "seconds ago" msgstr "ثانیه‌ها پیش" -#: js/js.js:707 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 دقیقه پیش" -#: js/js.js:708 +#: js/js.js:764 msgid "{minutes} minutes ago" -msgstr "" +msgstr "{دقیقه ها} دقیقه های پیش" -#: js/js.js:709 +#: js/js.js:765 msgid "1 hour ago" -msgstr "" +msgstr "1 ساعت پیش" -#: js/js.js:710 +#: js/js.js:766 msgid "{hours} hours ago" -msgstr "" +msgstr "{ساعت ها} ساعت ها پیش" -#: js/js.js:711 +#: js/js.js:767 msgid "today" msgstr "امروز" -#: js/js.js:712 +#: js/js.js:768 msgid "yesterday" msgstr "دیروز" -#: js/js.js:713 +#: js/js.js:769 msgid "{days} days ago" -msgstr "" +msgstr "{روزها} روزهای پیش" -#: js/js.js:714 +#: js/js.js:770 msgid "last month" msgstr "ماه قبل" -#: js/js.js:715 +#: js/js.js:771 msgid "{months} months ago" -msgstr "" +msgstr "{ماه ها} ماه ها پیش" -#: js/js.js:716 +#: js/js.js:772 msgid "months ago" msgstr "ماه‌های قبل" -#: js/js.js:717 +#: js/js.js:773 msgid "last year" msgstr "سال قبل" -#: js/js.js:718 +#: js/js.js:774 msgid "years ago" msgstr "سال‌های قبل" #: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "انتخاب کردن" #: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" @@ -159,138 +236,157 @@ 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 "" +msgstr "نوع Ø´ÛŒ تعیین نشده است." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: 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 "" +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:124 js/share.js:594 +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" -msgstr "" +msgstr "خطا Ø¯Ø±ØØ§Ù„ به اشتراک گذاشتن" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" -msgstr "" +msgstr "خطا Ø¯Ø±ØØ§Ù„ لغو اشتراک" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" -msgstr "" +msgstr "خطا در ØØ§Ù„ تغییر مجوز" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" -msgstr "" +msgstr "به اشتراک گذاشته شده با شما Ùˆ گروه {گروه} توسط {دارنده}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" -msgstr "" +msgstr "به اشتراک گذاشته شده با شما توسط { دارنده}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" -msgstr "" +msgstr "به اشتراک گذاشتن با" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" -msgstr "" +msgstr "به اشتراک گذاشتن با پیوند" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" -msgstr "" +msgstr "نگهداری کردن رمز عبور" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "گذرواژه" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" -msgstr "" +msgstr "پیوند ایمیل برای شخص." -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" -msgstr "" +msgstr "تنظیم تاریخ انقضا" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" -msgstr "" +msgstr "تاریخ انقضا" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" -msgstr "" +msgstr "از طریق ایمیل به اشتراک بگذارید :" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" -msgstr "" +msgstr "کسی ÛŒØ§ÙØª نشد" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" -msgstr "" +msgstr "اشتراک گذاری مجدد مجاز نمی باشد" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" -msgstr "" +msgstr "به اشتراک گذاشته شده در {بخش} با {کاربر}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "لغو اشتراک" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" -msgstr "" +msgstr "Ù…ÛŒ توان ویرایش کرد" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" -msgstr "" +msgstr "کنترل دسترسی" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "ایجاد" -#: js/share.js:316 +#: js/share.js:333 msgid "update" -msgstr "" +msgstr "به روز" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" -msgstr "" +msgstr "پاک کردن" -#: js/share.js:322 +#: js/share.js:339 msgid "share" -msgstr "" +msgstr "به اشتراک گذاشتن" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" -msgstr "" +msgstr "نگهداری از رمز عبور" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" -msgstr "" +msgstr "خطا در تنظیم نکردن تاریخ انقضا " -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" -msgstr "" +msgstr "خطا در تنظیم تاریخ انقضا" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "پسورد ابرهای شما تغییرکرد" @@ -305,11 +401,11 @@ msgstr "شما یک نامه الکترونیکی ØØ§ÙˆÛŒ یک لینک جهت #: lostpassword/templates/lostpassword.php:5 msgid "Reset email send." -msgstr "" +msgstr "تنظیم مجدد ایمیل را Ø¨ÙØ±Ø³ØªÛŒØ¯." #: lostpassword/templates/lostpassword.php:8 msgid "Request failed!" -msgstr "" +msgstr "درخواست رد شده است !" #: lostpassword/templates/lostpassword.php:11 templates/installation.php:39 #: templates/login.php:28 @@ -380,7 +476,7 @@ msgstr "اخطار امنیتی" msgid "" "No secure random number generator is available, please enable the PHP " "OpenSSL extension." -msgstr "" +msgstr "هیچ مولد تصادÙÛŒ امن در دسترس نیست، Ù„Ø·ÙØ§ ÙØ±Ù…ت PHP OpenSSL را ÙØ¹Ø§Ù„ نمایید." #: templates/installation.php:26 msgid "" @@ -432,7 +528,7 @@ msgstr "نام پایگاه داده" #: templates/installation.php:123 msgid "Database tablespace" -msgstr "" +msgstr "جدول پایگاه داده" #: templates/installation.php:129 msgid "Database host" @@ -442,103 +538,27 @@ msgstr "هاست پایگاه داده" msgid "Finish setup" msgstr "اتمام نصب" -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Sunday" -msgstr "یکشنبه" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Monday" -msgstr "دوشنبه" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "سه شنبه" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "چهارشنبه" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Thursday" -msgstr "پنجشنبه" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Friday" -msgstr "جمعه" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Saturday" -msgstr "شنبه" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "January" -msgstr "ژانویه" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "February" -msgstr "ÙØ¨Ø±ÛŒÙ‡" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "March" -msgstr "مارس" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "April" -msgstr "آوریل" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "May" -msgstr "Ù…ÛŒ" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "June" -msgstr "ژوئن" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "July" -msgstr "جولای" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "August" -msgstr "آگوست" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "September" -msgstr "سپتامبر" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "October" -msgstr "اکتبر" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "November" -msgstr "نوامبر" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "December" -msgstr "دسامبر" - -#: templates/layout.guest.php:41 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "سرویس وب ØªØØª کنترل شما" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "خروج" #: templates/login.php:10 msgid "Automatic logon rejected!" -msgstr "" +msgstr "ورود به سیستم اتوماتیک ردشد!" #: templates/login.php:11 msgid "" "If you did not change your password recently, your account may be " "compromised!" -msgstr "" +msgstr "اگر شما اخیرا رمزعبور را تغییر نداده اید، ØØ³Ø§Ø¨ شما در معرض خطر Ù…ÛŒ باشد !" #: templates/login.php:13 msgid "Please change your password to secure your account again." -msgstr "" +msgstr "Ù„Ø·ÙØ§ رمز عبور خود را تغییر دهید تا مجددا ØØ³Ø§Ø¨ شما در امان باشد." #: templates/login.php:19 msgid "Lost your password?" diff --git a/l10n/fa/files.po b/l10n/fa/files.po index 287637e3398..f101ae76370 100644 --- a/l10n/fa/files.po +++ b/l10n/fa/files.po @@ -4,14 +4,15 @@ # # Translators: # Hossein nag <h.sname@yahoo.com>, 2012. +# mahdi Kereshteh <miki_mika1362@yahoo.com>, 2013. # Mohammad Dashtizadeh <mohammad@dashtizadeh.net>, 2012. # vahid chakoshy <vchakoshy@gmail.com>, 2012. 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 08:21+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -20,216 +21,197 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "بارگذاری" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "هیچ ÙØ§ÛŒÙ„ÛŒ آپلود نشد.خطای ناشناس" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "هیچ خطایی وجود ندارد ÙØ§ÛŒÙ„ با موÙقیت بار گذاری شد" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " -msgstr "" +msgstr "پرونده آپلود شده بیش ازدستور ماکزیمم_ØØ¬Ù… ÙØ§ÛŒÙ„_برای آپلود در php.ini Ø§Ø³ØªÙØ§Ø¯Ù‡ کرده است." -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "ØØ¯Ø§Ú©Ø«Ø± ØØ¬Ù… مجاز برای بارگذاری از طریق HTML \nMAX_FILE_SIZE" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "مقدار Ú©Ù…ÛŒ از ÙØ§ÛŒÙ„ بارگذاری شده" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "هیچ ÙØ§ÛŒÙ„ÛŒ بارگذاری نشده" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "یک پوشه موقت Ú¯Ù… شده است" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "نوشتن بر روی دیسک سخت ناموÙÙ‚ بود" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" -msgstr "" +msgstr "ÙØ¶Ø§ÛŒ کاÙÛŒ در دسترس نیست" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." -msgstr "" +msgstr "Ùهرست راهنما نامعتبر Ù…ÛŒ باشد." #: appinfo/app.php:10 msgid "Files" msgstr "ÙØ§ÛŒÙ„ ها" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "لغو اشتراک" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "پاک کردن" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "تغییرنام" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" -msgstr "" +msgstr "{نام _جدید} در ØØ§Ù„ ØØ§Ø¶Ø± وجود دارد." -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "جایگزین" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" -msgstr "" +msgstr "پیشنهاد نام" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "لغو" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" -msgstr "" +msgstr "{نام _جدید} جایگزین شد " -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "بازگشت" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" -msgstr "" - -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" +msgstr "{نام_جدید} با { نام_قدیمی} جایگزین شد." -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." -msgstr "" +msgstr "'.' یک نام پرونده نامعتبر است." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." -msgstr "" +msgstr "نام پرونده نمی تواند خالی باشد." -#: js/files.js:62 +#: 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:204 +#: 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 "" +msgstr "دانلود شما در ØØ§Ù„ آماده شدن است. در صورتیکه پرونده ها بزرگ باشند ممکن است مدتی طول بکشد." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "ناتوان در بارگذاری یا ÙØ§ÛŒÙ„ یک پوشه است یا 0بایت دارد" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "خطا در بار گذاری" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "بستن" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "در انتظار" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" -msgstr "" +msgstr "1 پرونده آپلود شد." -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" -msgstr "" +msgstr "{ شمار } ÙØ§ÛŒÙ„ های در ØØ§Ù„ آپلود" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "بار گذاری لغو شد" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." -msgstr "" +msgstr "آپلودکردن پرونده در ØØ§Ù„ Ù¾ÛŒØ´Ø±ÙØª است. در صورت خروج از ØµÙØÙ‡ آپلود لغو میگردد. " -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." -msgstr "" +msgstr "URL نمی تواند خالی باشد." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" -msgstr "" - -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" +msgstr "نام پوشه نامعتبر است. Ø§Ø³ØªÙØ§Ø¯Ù‡ از \" به اشتراک گذاشته شده \" متعلق به سایت Owncloud است." -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "نام" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "اندازه" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "تغییر ÛŒØ§ÙØªÙ‡" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" -msgstr "" +msgstr "1 پوشه" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" -msgstr "" +msgstr "{ شمار} پوشه ها" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" -msgstr "" +msgstr "1 پرونده" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" -msgstr "" +msgstr "{ شمار } ÙØ§ÛŒÙ„ ها" + +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "بارگذاری" #: templates/admin.php:5 msgid "File handling" @@ -277,34 +259,42 @@ msgstr "پوشه" #: templates/index.php:14 msgid "From link" +msgstr "از پیوند" + +#: templates/index.php:40 +msgid "Trash" msgstr "" -#: templates/index.php:41 +#: templates/index.php:46 msgid "Cancel upload" msgstr "متوق٠کردن بار گذاری" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "اینجا هیچ چیز نیست." -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "بارگیری" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "ØØ¬Ù… بارگذاری بسیار زیاد است" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "ÙØ§ÛŒÙ„ها بیش از ØØ¯ تعیین شده در این سرور هستند\nمترجم:با تغییر ÙØ§ÛŒÙ„ php,ini میتوان این Ù…ØØ¯ÙˆØ¯ÛŒØª را برطر٠کرد" -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "پرونده ها در ØØ§Ù„ بازرسی هستند Ù„Ø·ÙØ§ صبر کنید" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "بازرسی کنونی" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/fa/files_trashbin.po b/l10n/fa/files_trashbin.po new file mode 100644 index 00000000000..99f4a8d73e0 --- /dev/null +++ b/l10n/fa/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: fa\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/fa/lib.po b/l10n/fa/lib.po index 52e8d62eef4..7cceb3e4f3a 100644 --- a/l10n/fa/lib.po +++ b/l10n/fa/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-01-27 00:04+0100\n" +"PO-Revision-Date: 2013-01-26 13:36+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -58,7 +58,7 @@ msgstr "" msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:228 +#: helper.php:229 msgid "couldn't be determined" msgstr "" @@ -101,7 +101,7 @@ msgstr "%d دقیقه پیش" #: template.php:116 msgid "1 hour ago" -msgstr "" +msgstr "1 ساعت پیش" #: template.php:117 #, php-format diff --git a/l10n/fa/settings.po b/l10n/fa/settings.po index 20aa22599b1..758c6c4152b 100644 --- a/l10n/fa/settings.po +++ b/l10n/fa/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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -91,7 +91,7 @@ msgstr "ÙØ¹Ø§Ù„" msgid "Saving..." msgstr "Ø¯Ø±ØØ§Ù„ ذخیره ..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__language_name__" @@ -103,15 +103,15 @@ msgstr "برنامه خود را Ø¨ÛŒØ§ÙØ²Ø§ÛŒÛŒØ¯" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "یک برنامه انتخاب کنید" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "ØµÙØÙ‡ این اٌپ را در apps.owncloud.com ببینید" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -160,7 +160,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "گذرواژه" @@ -230,11 +230,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "نام" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "گروه ها" @@ -246,26 +246,38 @@ msgstr "ایجاد کردن" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "سایر" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "پاک کردن" diff --git a/l10n/fi_FI/core.po b/l10n/fi_FI/core.po index 7aa46f13517..cd1630bfcfb 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-01-16 00:19+0100\n" -"PO-Revision-Date: 2013-01-15 09:13+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" @@ -24,24 +24,24 @@ msgstr "" "Language: fi_FI\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "Käyttäjä %s jakoi tiedoston kanssasi" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "Käyttäjä %s jakoi kansion kanssasi" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "Käyttäjä %s jakoi tiedoston \"%s\" kanssasi. Se on ladattavissa täältä: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -86,59 +86,135 @@ msgstr "Luokkia ei valittu poistettavaksi." msgid "Error removing %s from favorites." msgstr "Virhe poistaessa kohdetta %s suosikeista." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Sunnuntai" + +#: js/config.php:32 +msgid "Monday" +msgstr "Maanantai" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Tiistai" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Keskiviikko" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Torstai" + +#: js/config.php:32 +msgid "Friday" +msgstr "Perjantai" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Lauantai" + +#: js/config.php:33 +msgid "January" +msgstr "Tammikuu" + +#: js/config.php:33 +msgid "February" +msgstr "Helmikuu" + +#: js/config.php:33 +msgid "March" +msgstr "Maaliskuu" + +#: js/config.php:33 +msgid "April" +msgstr "Huhtikuu" + +#: js/config.php:33 +msgid "May" +msgstr "Toukokuu" + +#: js/config.php:33 +msgid "June" +msgstr "Kesäkuu" + +#: js/config.php:33 +msgid "July" +msgstr "Heinäkuu" + +#: js/config.php:33 +msgid "August" +msgstr "Elokuu" + +#: js/config.php:33 +msgid "September" +msgstr "Syyskuu" + +#: js/config.php:33 +msgid "October" +msgstr "Lokakuu" + +#: js/config.php:33 +msgid "November" +msgstr "Marraskuu" + +#: js/config.php:33 +msgid "December" +msgstr "Joulukuu" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Asetukset" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "sekuntia sitten" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 minuutti sitten" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} minuuttia sitten" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 tunti sitten" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} tuntia sitten" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "tänään" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "eilen" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} päivää sitten" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "viime kuussa" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} kuukautta sitten" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "kuukautta sitten" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "viime vuonna" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "vuotta sitten" @@ -168,8 +244,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Virhe" @@ -181,122 +257,141 @@ msgstr "Sovelluksen nimeä ei ole määritelty." msgid "The required file {file} is not installed!" msgstr "Vaadittua tiedostoa {file} ei ole asennettu!" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Jaa" + +#: 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 "Virhe jaettaessa" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Virhe jakoa peruttaessa" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Virhe oikeuksia muuttaessa" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Jaettu sinun ja ryhmän {group} kanssa käyttäjän {owner} toimesta" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Jaettu kanssasi käyttäjän {owner} toimesta" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Jaa" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Jaa linkillä" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Suojaa salasanalla" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Salasana" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Lähetä linkki sähköpostitse" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Lähetä" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Aseta päättymispäivä" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Päättymispäivä" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Jaa sähköpostilla:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Henkilöitä ei löytynyt" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Jakaminen uudelleen ei ole salittu" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Peru jakaminen" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "voi muokata" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "Pääsyn hallinta" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "luo" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "päivitä" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "poista" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "jaa" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Salasanasuojattu" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Virhe purettaessa eräpäivää" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Virhe päättymispäivää asettaessa" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Lähetetään..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Sähköposti lähetetty" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "Päivitys epäonnistui. Ilmoita ongelmasta <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud-yhteisölle</a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "Päivitys onnistui. Selain ohjautuu nyt ownCloudiisi." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud-salasanan nollaus" @@ -448,87 +543,11 @@ msgstr "Tietokantapalvelin" msgid "Finish setup" msgstr "Viimeistele asennus" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Sunnuntai" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Maanantai" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Tiistai" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Keskiviikko" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Torstai" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Perjantai" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Lauantai" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Tammikuu" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Helmikuu" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Maaliskuu" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Huhtikuu" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Toukokuu" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Kesäkuu" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Heinäkuu" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Elokuu" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Syyskuu" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Lokakuu" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Marraskuu" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Joulukuu" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "verkkopalvelut hallinnassasi" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Kirjaudu ulos" diff --git a/l10n/fi_FI/files.po b/l10n/fi_FI/files.po index a0d18954d98..0208f51f421 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-01-21 00:04+0100\n" -"PO-Revision-Date: 2013-01-20 11:41+0000\n" -"Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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,65 +22,46 @@ msgstr "" "Language: fi_FI\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Lähetä" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Kohteen %s siirto ei onnistunut" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Tiedoston nimeäminen uudelleen ei onnistunut" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Tiedostoa ei lähetetty. Tuntematon virhe" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Ei virheitä, tiedosto lähetettiin onnistuneesti" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Lähetetty tiedosto ylittää HTML-lomakkeessa määritetyn MAX_FILE_SIZE-arvon ylärajan" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Tiedoston lähetys onnistui vain osittain" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Yhtäkään tiedostoa ei lähetetty" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Väliaikaiskansiota ei ole olemassa" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Levylle kirjoitus epäonnistui" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Tilaa ei ole riittävästi" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Virheellinen kansio." @@ -88,151 +69,151 @@ msgstr "Virheellinen kansio." msgid "Files" msgstr "Tiedostot" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Peru jakaminen" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Poista" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Nimeä uudelleen" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} on jo olemassa" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "korvaa" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "ehdota nimeä" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "peru" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "kumoa" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "" - -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' on virheellinen nimi tiedostolle." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Tiedoston nimi ei voi olla tyhjä." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Virheellinen nimi, merkit '\\', '/', '<', '>', ':', '\"', '|', '?' ja '*' eivät ole sallittuja." -#: js/files.js:204 +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "Tallennustila on loppu, tiedostoja ei voi enää päivittää tai synkronoida!" + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "Tallennustila on melkein loppu ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "Lataustasi valmistellaan. Tämä saattaa kestää hetken, jos tiedostot ovat suuria kooltaan." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Tiedoston lähetys epäonnistui, koska sen koko on 0 tavua tai kyseessä on kansio" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Lähetysvirhe." -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Sulje" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Odottaa" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Lähetys peruttu." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "Verkko-osoite ei voi olla tyhjä" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nimi" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Koko" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Muutettu" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 kansio" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} kansiota" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 tiedosto" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} tiedostoa" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Lähetä" + #: templates/admin.php:5 msgid "File handling" msgstr "Tiedostonhallinta" @@ -281,32 +262,40 @@ msgstr "Kansio" msgid "From link" msgstr "Linkistä" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Peru lähetys" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Täällä ei ole mitään. Lähetä tänne jotakin!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Lataa" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Lähetettävä tiedosto on liian suuri" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Lähetettäväksi valitsemasi tiedostot ylittävät palvelimen salliman tiedostokoon rajan." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Tiedostoja tarkistetaan, odota hetki." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Tämänhetkinen tutkinta" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/fi_FI/files_trashbin.po b/l10n/fi_FI/files_trashbin.po new file mode 100644 index 00000000000..6c75aef2cfe --- /dev/null +++ b/l10n/fi_FI/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi_FI\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/fi_FI/settings.po b/l10n/fi_FI/settings.po index 087d613c685..7596a234212 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" @@ -90,7 +90,7 @@ msgstr "Käytä" msgid "Saving..." msgstr "Tallennetaan..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "_kielen_nimi_" @@ -102,15 +102,15 @@ msgstr "Lisää sovelluksesi" msgid "More Apps" msgstr "Lisää sovelluksia" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Valitse sovellus" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Katso sovellussivu osoitteessa apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-lisensoija <span class=\"author\"></span>" @@ -159,7 +159,7 @@ msgstr "Lataa Android-sovellus" msgid "Download iOS Client" msgstr "Lataa iOS-sovellus" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Salasana" @@ -229,11 +229,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Kehityksestä on vastannut <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud-yhteisö</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">lähdekoodi</a> on julkaistu lisenssin <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> alaisena." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nimi" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "Kirjautumisnimi" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Ryhmät" @@ -245,26 +245,38 @@ msgstr "Luo" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Rajoittamaton" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Muu" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "Näyttönimi" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Ryhmän ylläpitäjä" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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 "Oletus" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Poista" diff --git a/l10n/fr/core.po b/l10n/fr/core.po index 512141ccb68..81a4e6bd2ee 100644 --- a/l10n/fr/core.po +++ b/l10n/fr/core.po @@ -4,6 +4,7 @@ # # Translators: # Christophe Lherieau <skimpax@gmail.com>, 2012-2013. +# David Basquin <dba@alternalease.fr>, 2013. # <dba@alternalease.fr>, 2013. # <fkhannouf@me.com>, 2012. # <florentin.lemoal@gmail.com>, 2012. @@ -18,8 +19,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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" @@ -28,24 +29,24 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "L'utilisateur %s a partagé un fichier avec vous" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "L'utilsateur %s a partagé un dossier avec vous" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "L'utilisateur %s a partagé le fichier \"%s\" avec vous. Vous pouvez le télécharger ici : %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -90,59 +91,135 @@ msgstr "Aucune catégorie sélectionnée pour suppression" msgid "Error removing %s from favorites." msgstr "Erreur lors de la suppression de %s des favoris." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Dimanche" + +#: js/config.php:32 +msgid "Monday" +msgstr "Lundi" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Mardi" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Mercredi" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Jeudi" + +#: js/config.php:32 +msgid "Friday" +msgstr "Vendredi" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Samedi" + +#: js/config.php:33 +msgid "January" +msgstr "janvier" + +#: js/config.php:33 +msgid "February" +msgstr "février" + +#: js/config.php:33 +msgid "March" +msgstr "mars" + +#: js/config.php:33 +msgid "April" +msgstr "avril" + +#: js/config.php:33 +msgid "May" +msgstr "mai" + +#: js/config.php:33 +msgid "June" +msgstr "juin" + +#: js/config.php:33 +msgid "July" +msgstr "juillet" + +#: js/config.php:33 +msgid "August" +msgstr "août" + +#: js/config.php:33 +msgid "September" +msgstr "septembre" + +#: js/config.php:33 +msgid "October" +msgstr "octobre" + +#: js/config.php:33 +msgid "November" +msgstr "novembre" + +#: js/config.php:33 +msgid "December" +msgstr "décembre" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Paramètres" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "il y a quelques secondes" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "il y a une minute" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "il y a {minutes} minutes" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "Il y a une heure" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "Il y a {hours} heures" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "aujourd'hui" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "hier" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "il y a {days} jours" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "le mois dernier" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "Il y a {months} mois" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "il y a plusieurs mois" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "l'année dernière" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "il y a plusieurs années" @@ -172,8 +249,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Erreur" @@ -185,122 +262,141 @@ msgstr "Le nom de l'application n'est pas spécifié." msgid "The required file {file} is not installed!" msgstr "Le fichier requis {file} n'est pas installé !" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Partager" + +#: 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 "Erreur lors de la mise en partage" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Erreur lors de l'annulation du partage" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Erreur lors du changement des permissions" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Partagé par {owner} avec vous et le groupe {group}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Partagé avec vous par {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Partager avec" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Partager via lien" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Protéger par un mot de passe" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Mot de passe" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Envoyez le lien par email" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Envoyer" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Spécifier la date d'expiration" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Date d'expiration" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Partager via e-mail :" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Aucun utilisateur trouvé" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Le repartage n'est pas autorisé" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Partagé dans {item} avec {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Ne plus partager" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "édition autorisée" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "contrôle des accès" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "créer" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "mettre à jour" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "supprimer" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "partager" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Protégé par un mot de passe" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Une erreur est survenue pendant la suppression de la date d'expiration" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Erreur lors de la spécification de la date d'expiration" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "En cours d'envoi ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Email envoyé" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "La mise à jour a échoué. Veuillez signaler ce problème à la <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">communauté ownCloud</a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "La mise à jour a réussi. Vous êtes redirigé maintenant vers ownCloud." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Réinitialisation de votre mot de passe Owncloud" @@ -452,87 +548,11 @@ msgstr "Serveur de la base de données" msgid "Finish setup" msgstr "Terminer l'installation" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Dimanche" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Lundi" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Mardi" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Mercredi" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Jeudi" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Vendredi" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Samedi" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "janvier" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "février" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "mars" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "avril" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "mai" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "juin" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "juillet" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "août" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "septembre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "octobre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "novembre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "décembre" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "services web sous votre contrôle" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Se déconnecter" diff --git a/l10n/fr/files.po b/l10n/fr/files.po index ca272a1b288..de61e4b0576 100644 --- a/l10n/fr/files.po +++ b/l10n/fr/files.po @@ -5,6 +5,7 @@ # Translators: # Christophe Lherieau <skimpax@gmail.com>, 2012-2013. # Cyril Glapa <kyriog@gmail.com>, 2012. +# David Basquin <dba@alternalease.fr>, 2013. # <dba@alternalease.fr>, 2013. # Geoffrey Guerrier <geoffrey.guerrier@gmail.com>, 2012. # <gp4004@arghh.org>, 2012. @@ -19,8 +20,8 @@ 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 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" @@ -29,65 +30,46 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Envoyer" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Impossible de déplacer %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Impossible de renommer le fichier" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Aucun fichier n'a été chargé. Erreur inconnue" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Aucune erreur, le fichier a été téléversé avec succès" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Le fichier envoyé dépasse la valeur upload_max_filesize située dans le fichier php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Le fichier téléversé excède la valeur de MAX_FILE_SIZE spécifiée dans le formulaire HTML" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Le fichier n'a été que partiellement téléversé" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Aucun fichier n'a été téléversé" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Il manque un répertoire temporaire" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Erreur d'écriture sur le disque" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Espace disponible insuffisant" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Dossier invalide." @@ -95,151 +77,151 @@ msgstr "Dossier invalide." msgid "Files" msgstr "Fichiers" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Ne plus partager" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Supprimer" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Renommer" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} existe déjà " -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "remplacer" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "Suggérer un nom" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "annuler" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "{new_name} a été remplacé" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "annuler" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} a été remplacé par {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "Fichiers non partagés : {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "Fichiers supprimés : {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' n'est pas un nom de fichier valide." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Le nom de fichier ne peut être vide." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Nom invalide, les caractères '\\', '/', '<', '>', ':', '\"', '|', '?' et '*' ne sont pas autorisés." -#: js/files.js:204 +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "Votre espage de stockage est plein, les fichiers ne peuvent plus être téléversés ou synchronisés !" + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "Votre espace de stockage est presque plein ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." -msgstr "" +msgstr "Votre téléchargement est cours de préparation. Ceci peut nécessiter un certain temps si les fichiers sont volumineux." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Impossible de charger vos fichiers car il s'agit d'un dossier ou le fichier fait 0 octet." -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Erreur de chargement" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Fermer" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "En cours" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 fichier en cours de téléchargement" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} fichiers téléversés" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Chargement annulé." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "L'URL ne peut-être vide" -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "{count} fichiers indexés" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "erreur lors de l'indexation" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nom" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Taille" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Modifié" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 dossier" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} dossiers" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 fichier" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} fichiers" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Envoyer" + #: templates/admin.php:5 msgid "File handling" msgstr "Gestion des fichiers" @@ -288,32 +270,40 @@ msgstr "Dossier" msgid "From link" msgstr "Depuis le lien" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Annuler l'envoi" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Il n'y a rien ici ! Envoyez donc quelque chose :)" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Télécharger" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Fichier trop volumineux" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Les fichiers que vous essayez d'envoyer dépassent la taille maximale permise par ce serveur." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Les fichiers sont en cours d'analyse, veuillez patienter." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Analyse en cours" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/fr/files_encryption.po b/l10n/fr/files_encryption.po index 8c8754a7a81..f1305f621d6 100644 --- a/l10n/fr/files_encryption.po +++ b/l10n/fr/files_encryption.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Romain DEP. <rom1dep@gmail.com>, 2012. +# Romain DEP. <rom1dep@gmail.com>, 2012-2013. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-25 00:05+0100\n" +"PO-Revision-Date: 2013-01-24 01:10+0000\n" +"Last-Translator: Romain DEP. <rom1dep@gmail.com>\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" @@ -22,53 +22,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "Mode de chiffrement changé en chiffrement côté client" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +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 "" +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 "" +msgstr "Impossible de convertir votre mot de passe de chiffrement en mot de passe de connexion" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Choix du type de chiffrement :" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Chiffrement côté client (plus sécurisé, mais ne permet pas l'accès à vos données depuis l'interface web)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Chiffrement côté serveur (vous permet d'accéder à vos fichiers depuis l'interface web et depuis le client de synchronisation)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Aucun (pas de chiffrement)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Important : Une fois le mode de chiffrement choisi, il est impossible de revenir en arrière" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "Propre à l'utilisateur (laisse le choix à l'utilisateur)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/fr/files_trashbin.po b/l10n/fr/files_trashbin.po new file mode 100644 index 00000000000..997e15235bc --- /dev/null +++ b/l10n/fr/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/fr/lib.po b/l10n/fr/lib.po index 07fd3669c49..0ae131d5c58 100644 --- a/l10n/fr/lib.po +++ b/l10n/fr/lib.po @@ -4,14 +4,14 @@ # # Translators: # Geoffrey Guerrier <geoffrey.guerrier@gmail.com>, 2012. -# Romain DEP. <rom1dep@gmail.com>, 2012. +# Romain DEP. <rom1dep@gmail.com>, 2012-2013. 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" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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. <rom1dep@gmail.com>\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" @@ -59,9 +59,9 @@ msgstr "Retour aux Fichiers" msgid "Selected files too large to generate zip file." msgstr "Les fichiers sélectionnés sont trop volumineux pour être compressés." -#: helper.php:228 +#: helper.php:229 msgid "couldn't be determined" -msgstr "" +msgstr "impossible à déterminer" #: json.php:28 msgid "Application is not enabled" diff --git a/l10n/fr/settings.po b/l10n/fr/settings.po index 9f3a6ceea3b..320184d4152 100644 --- a/l10n/fr/settings.po +++ b/l10n/fr/settings.po @@ -22,8 +22,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" @@ -102,7 +102,7 @@ msgstr "Activer" msgid "Saving..." msgstr "Sauvegarde..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Français" @@ -114,15 +114,15 @@ msgstr "Ajoutez votre application" msgid "More Apps" msgstr "Plus d'applications…" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Sélectionner une Application" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Voir la page des applications à l'url apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "Distribué sous licence <span class=\"licence\"></span>, par <span class=\"author\"></span>" @@ -171,7 +171,7 @@ msgstr "Télécharger le client Android" msgid "Download iOS Client" msgstr "Télécharger le client iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Mot de passe" @@ -241,11 +241,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Développé par la <a href=\"http://ownCloud.org/contact\" target=\"_blank\">communauté ownCloud</a>, le <a href=\"https://github.com/owncloud\" target=\"_blank\">code source</a> est publié sous license <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nom" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Groupes" @@ -257,26 +257,38 @@ msgstr "Créer" msgid "Default Storage" msgstr "Support de stockage par défaut" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Illimité" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Autre" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Groupe Admin" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Support de stockage" -#: templates/users.php:133 +#: 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 "Défaut" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Supprimer" diff --git a/l10n/fr/user_ldap.po b/l10n/fr/user_ldap.po index c437634e5ed..1beebaaf58f 100644 --- a/l10n/fr/user_ldap.po +++ b/l10n/fr/user_ldap.po @@ -6,16 +6,16 @@ # Cyril Glapa <kyriog@gmail.com>, 2012. # <mathieu.payrol@gmail.com>, 2012. # <mishka.lazzlo@gmail.com>, 2012. -# Romain DEP. <rom1dep@gmail.com>, 2012. +# Romain DEP. <rom1dep@gmail.com>, 2012-2013. # <windes@tructor.net>, 2012. # <zrk951@gmail.com>, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-16 00:19+0100\n" -"PO-Revision-Date: 2013-01-15 23:20+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-25 00:05+0100\n" +"PO-Revision-Date: 2013-01-24 01:50+0000\n" +"Last-Translator: Romain DEP. <rom1dep@gmail.com>\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" @@ -34,7 +34,7 @@ msgstr "<b>Avertissement:</b> Les applications user_ldap et user_webdavauth sont msgid "" "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not " "work. Please ask your system administrator to install it." -msgstr "" +msgstr "<b>Attention :</b> Le module php LDAP n'est pas installé, par conséquent cette extension ne pourra fonctionner. Veuillez contacter votre administrateur système afin qu'il l'installe." #: templates/settings.php:15 msgid "Host" @@ -51,11 +51,11 @@ msgstr "DN Racine" #: templates/settings.php:16 msgid "One Base DN per line" -msgstr "" +msgstr "Un DN racine par ligne" #: templates/settings.php:16 msgid "You can specify Base DN for users and groups in the Advanced tab" -msgstr "Vous pouvez détailler les DN Racines de vos utilisateurs et groupes dans l'onglet Avancé" +msgstr "Vous pouvez spécifier les DN Racines de vos utilisateurs et groupes via l'onglet Avancé" #: templates/settings.php:17 msgid "User DN" @@ -66,7 +66,7 @@ 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 "Le DN de l'utilisateur client avec lequel la liaison doit se faire, par exemple uid=agent,dc=example,dc=com. Pour l'accès anonyme, laisser le DN et le mot de passe vides." +msgstr "DN de l'utilisateur client pour lequel la liaison doit se faire, par exemple uid=agent,dc=example,dc=com. Pour un accès anonyme, laisser le DN et le mot de passe vides." #: templates/settings.php:18 msgid "Password" @@ -126,7 +126,7 @@ msgstr "DN racine de l'arbre utilisateurs" #: templates/settings.php:25 msgid "One User Base DN per line" -msgstr "" +msgstr "Un DN racine utilisateur par ligne" #: templates/settings.php:26 msgid "Base Group Tree" @@ -134,7 +134,7 @@ msgstr "DN racine de l'arbre groupes" #: templates/settings.php:26 msgid "One Group Base DN per line" -msgstr "" +msgstr "Un DN racine groupe par ligne" #: templates/settings.php:27 msgid "Group-Member association" diff --git a/l10n/fr/user_webdavauth.po b/l10n/fr/user_webdavauth.po index ec81f76c54d..4d665c8ff42 100644 --- a/l10n/fr/user_webdavauth.po +++ b/l10n/fr/user_webdavauth.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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-25 00:05+0100\n" +"PO-Revision-Date: 2013-01-24 01:04+0000\n" +"Last-Translator: Romain DEP. <rom1dep@gmail.com>\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" @@ -24,7 +24,7 @@ msgstr "" #: templates/settings.php:3 msgid "WebDAV Authentication" -msgstr "" +msgstr "Authentification WebDAV" #: templates/settings.php:4 msgid "URL: http://" @@ -35,4 +35,4 @@ 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 enverra les informations de connexion à cette adresse. Ce module complémentaire analyse le code réponse HTTP et considère tout code différent des codes 401 et 403 comme associé à une authentification correcte." diff --git a/l10n/gl/core.po b/l10n/gl/core.po index de2454855f0..9b469981078 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" @@ -20,24 +20,24 @@ msgstr "" "Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "O usuario %s compartÃu un ficheiro con vostede" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "O usuario %s compartÃu un cartafol con vostede" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "O usuario %s compartiu o ficheiro «%s» con vostede. Teno dispoñÃbel en: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -82,59 +82,135 @@ msgstr "Non hai categorÃas seleccionadas para eliminar." msgid "Error removing %s from favorites." msgstr "Produciuse un erro ao eliminar %s dos favoritos." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Domingo" + +#: js/config.php:32 +msgid "Monday" +msgstr "Luns" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Martes" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Mércores" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Xoves" + +#: js/config.php:32 +msgid "Friday" +msgstr "Venres" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Sábado" + +#: js/config.php:33 +msgid "January" +msgstr "xaneiro" + +#: js/config.php:33 +msgid "February" +msgstr "febreiro" + +#: js/config.php:33 +msgid "March" +msgstr "marzo" + +#: js/config.php:33 +msgid "April" +msgstr "abril" + +#: js/config.php:33 +msgid "May" +msgstr "maio" + +#: js/config.php:33 +msgid "June" +msgstr "xuño" + +#: js/config.php:33 +msgid "July" +msgstr "xullo" + +#: js/config.php:33 +msgid "August" +msgstr "agosto" + +#: js/config.php:33 +msgid "September" +msgstr "setembro" + +#: js/config.php:33 +msgid "October" +msgstr "outubro" + +#: js/config.php:33 +msgid "November" +msgstr "novembro" + +#: js/config.php:33 +msgid "December" +msgstr "decembro" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Configuracións" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "segundos atrás" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "hai 1 minuto" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "hai {minutes} minutos" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "hai 1 hora" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "hai {hours} horas" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "hoxe" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "onte" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "hai {days} dÃas" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "último mes" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "hai {months} meses" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "meses atrás" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "último ano" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "anos atrás" @@ -164,8 +240,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Erro" @@ -177,122 +253,141 @@ msgstr "Non se especificou o nome do aplicativo." msgid "The required file {file} is not installed!" msgstr "Non está instalado o ficheiro {file} que se precisa" -#: js/share.js:124 js/share.js:594 +#: 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 +msgid "Shared" +msgstr "" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Produciuse un erro ao compartir" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Produciuse un erro ao deixar de compartir" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Produciuse un erro ao cambiar os permisos" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Compartido con vostede e co grupo {group} por {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Compartido con vostede por {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Compartir con" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Compartir coa ligazón" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Protexido con contrasinais" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Contrasinal" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Enviar ligazón por correo" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Enviar" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Definir a data de caducidade" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Data de caducidade" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Compartir por correo:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Non se atopou xente" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Non se permite volver a compartir" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Compartido en {item} con {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Deixar de compartir" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "pode editar" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "control de acceso" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "crear" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "actualizar" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "eliminar" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "compartir" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Protexido con contrasinal" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Produciuse un erro ao retirar a data de caducidade" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Produciuse un erro ao definir a data de caducidade" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Enviando..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Correo enviado" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "Restabelecer o contrasinal de ownCloud" @@ -444,87 +539,11 @@ msgstr "Servidor da base de datos" msgid "Finish setup" msgstr "Rematar a configuración" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Domingo" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Luns" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Martes" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Mércores" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Xoves" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Venres" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Sábado" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "xaneiro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "febreiro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "marzo" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "abril" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "maio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "xuño" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "xullo" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "agosto" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "setembro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "outubro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "novembro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "decembro" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "servizos web baixo o seu control" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Desconectar" diff --git a/l10n/gl/files.po b/l10n/gl/files.po index d7711dff1bf..19fcb367bac 100644 --- a/l10n/gl/files.po +++ b/l10n/gl/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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" @@ -19,65 +19,46 @@ msgstr "" "Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Enviar" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Non se puido mover %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Non se pode renomear o ficheiro" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Non se subiu ningún ficheiro. Erro descoñecido." -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Non hai erros. O ficheiro enviouse correctamente" -#: ajax/upload.php:31 +#: ajax/upload.php:25 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" -#: ajax/upload.php:33 +#: ajax/upload.php:27 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" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "O ficheiro enviado foi só parcialmente enviado" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Non se enviou ningún ficheiro" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Falta un cartafol temporal" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Erro ao escribir no disco" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "O espazo dispoñÃbel é insuficiente" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "O directorio é incorrecto." @@ -85,151 +66,151 @@ msgstr "O directorio é incorrecto." msgid "Files" msgstr "Ficheiros" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Deixar de compartir" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Eliminar" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Mudar o nome" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "xa existe un {new_name}" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "substituÃr" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "suxerir nome" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "substituÃr {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "desfacer" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "substituÃr {new_name} polo {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "{files} sen compartir" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "{files} eliminados" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' é un nonme de ficheiro non válido" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "O nome de ficheiro non pode estar baldeiro" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Nome non válido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non se permiten." -#: js/files.js:204 +#: 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:242 +#: 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" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Erro na subida" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Pechar" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Pendentes" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 ficheiro subÃndose" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} ficheiros subÃndose" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Subida cancelada." -#: js/files.js:486 +#: js/files.js:502 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." -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL non pode quedar baleiro." -#: js/files.js:565 +#: js/files.js:580 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" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} ficheiros escaneados" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "erro mentres analizaba" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nome" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Tamaño" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Modificado" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 cartafol" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} cartafoles" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 ficheiro" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} ficheiros" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Enviar" + #: templates/admin.php:5 msgid "File handling" msgstr "Manexo de ficheiro" @@ -278,32 +259,40 @@ msgstr "Cartafol" msgid "From link" msgstr "Dende a ligazón" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Cancelar a subida" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Nada por aquÃ. EnvÃa algo." -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Descargar" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "EnvÃo demasiado grande" -#: templates/index.php:104 +#: templates/index.php:107 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" -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Estanse analizando os ficheiros. Agarda." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Análise actual" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/gl/files_trashbin.po b/l10n/gl/files_trashbin.po new file mode 100644 index 00000000000..7c20517d24e --- /dev/null +++ b/l10n/gl/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: gl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/gl/settings.po b/l10n/gl/settings.po index 428b5f06cd5..957989c610c 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" @@ -90,7 +90,7 @@ msgstr "Activar" msgid "Saving..." msgstr "Gardando..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Galego" @@ -102,15 +102,15 @@ msgstr "Engada o seu aplicativo" msgid "More Apps" msgstr "Máis aplicativos" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Escolla un aplicativo" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Consulte a páxina do aplicativo en apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licenciado por<span class=\"author\"></span>" @@ -159,7 +159,7 @@ msgstr "Descargar clientes para Android" msgid "Download iOS Client" msgstr "Descargar clientes ra iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Contrasinal" @@ -229,11 +229,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Desenvolvido pola <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunidade ownCloud</a>, o <a href=\"https://github.com/owncloud\" target=\"_blank\">código fonte</a> está baixo a licenza <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nome" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupos" @@ -245,26 +245,38 @@ msgstr "Crear" msgid "Default Storage" msgstr "Almacenamento predeterminado" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Sen lÃmites" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Outro" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Grupo Admin" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Almacenamento" -#: templates/users.php:133 +#: 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 "Predeterminado" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Eliminar" diff --git a/l10n/he/core.po b/l10n/he/core.po index 78ebe7d5f2d..a8d90561ae2 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -22,24 +22,24 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "המשתמש %s שיתף ×תך קובץ" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "המשתמש %s שיתף ×תך תיקייה" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "המשתמש %s שיתף ×תך ×ת הקובץ „%s“. × ×™×ª×Ÿ להוריד ×ת הקובץ מכ×ן: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -84,59 +84,135 @@ msgstr "×œ× × ×‘×—×¨×• קטגוריות למחיקה" msgid "Error removing %s from favorites." msgstr "שגי××” בהסרת %s מהמועדפי×." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "הגדרות" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "×©× ×™×•×ª" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "×œ×¤× ×™ דקה ×חת" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "×œ×¤× ×™ {minutes} דקות" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "×œ×¤× ×™ שעה" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "×œ×¤× ×™ {hours} שעות" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "היו×" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "×תמול" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "×œ×¤× ×™ {days} ימי×" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "חודש שעבר" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "×œ×¤× ×™ {months} חודשי×" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "חודשי×" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "×©× ×” שעברה" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "×©× ×™×" @@ -166,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "שגי××”" @@ -179,122 +255,141 @@ msgstr "×©× ×”×™×™×©×•× ×œ× ×¦×•×™×Ÿ." msgid "The required file {file} is not installed!" msgstr "הקובץ ×”× ×“×¨×© {file} ××™× ×• מותקן!" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "שגי××” במהלך ביטול השיתוף" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "שגי××” במהלך ×©×™× ×•×™ ההגדרות" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "שותף ×תך ×•×¢× ×”×§×‘×•×¦×” {group} שבבעלות {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "שותף ×תך על ידי {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "שיתוף ×¢×" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "שיתוף ×¢× ×§×™×©×•×¨" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "×”×’× ×” בססמה" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "ססמה" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "שליחת קישור בדו×״ל למשתמש" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "שליחה" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "הגדרת ת×ריך תפוגה" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "ת×ריך התפוגה" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "שיתוף ב×מצעות דו×״ל:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "×œ× × ×ž×¦×ו ×× ×©×™×" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "×סור לעשות שיתוף מחדש" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "שותף תחת {item} ×¢× {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "הסר שיתוף" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "× ×™×ª×Ÿ לערוך" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "בקרת גישה" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "יצירה" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "עדכון" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "מחיקה" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "שיתוף" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "מוגן בססמה" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "×ירעה שגי××” בביטול ת×ריך התפוגה" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "×ירעה שגי××” בעת הגדרת ת×ריך התפוגה" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "מתבצעת שליחה ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "הודעת הדו×״ל × ×©×œ×—×”" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "×יפוס הססמה של ownCloud" @@ -446,87 +541,11 @@ msgstr "שרת בסיס × ×ª×•× ×™×" msgid "Finish setup" msgstr "×¡×™×•× ×”×ª×§× ×”" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "×™×•× ×¨×שון" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "×™×•× ×©× ×™" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "×™×•× ×©×œ×™×©×™" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "×™×•× ×¨×‘×™×¢×™" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "×™×•× ×—×ž×™×©×™" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "×™×•× ×©×™×©×™" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "שבת" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "×™× ×•×ר" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "פברו×ר" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "מרץ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "×פריל" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "מ××™" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "×™×•× ×™" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "יולי" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "×וגוסט" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "ספטמבר" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "×וקטובר" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "× ×•×‘×ž×‘×¨" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "דצמבר" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "שירותי רשת בשליטתך" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "×”×ª× ×ª×§×•×ª" diff --git a/l10n/he/files.po b/l10n/he/files.po index f3c44d37861..d40c3181983 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -21,65 +21,46 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "העל××”" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "×œ× ×”×•×¢×œ×” קובץ. טעות בלתי מזוהה." -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "×œ× ×ירעה תקלה, ×”×§×‘×¦×™× ×”×•×¢×œ×• בהצלחה" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "×”×§×‘×¦×™× ×©× ×©×œ×—×• ×—×•×¨×’×™× ×ž×”×’×•×“×œ שצוין בהגדרה upload_max_filesize שבקובץ php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "הקובץ שהועלה חרג ×ž×”×”× ×—×™×” MAX_FILE_SIZE ×©×¦×•×™× ×” בטופס ×”Ö¾HTML" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "הקובץ שהועלה הועלה בצורה חלקית" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "×œ× ×”×•×¢×œ×• קבצי×" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "תיקייה ×–×ž× ×™×ª חסרה" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "הכתיבה ×œ×›×•× ×Ÿ × ×›×©×œ×”" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -87,151 +68,151 @@ msgstr "" msgid "Files" msgstr "קבצי×" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "הסר שיתוף" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "מחיקה" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "×©×™× ×•×™ ש×" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} כבר ×§×™×™×" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "החלפה" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "הצעת ש×" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "ביטול" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "{new_name} הוחלף" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "ביטול" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} הוחלף ב־{old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "בוטל ×©×™×ª×•×¤× ×©×œ {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "{files} × ×ž×—×§×•" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "×”×©× ×©×’×•×™, ×סור להשתמש ×‘×ª×•×•×™× '\\', '/', '<', '>', ':', '\"', '|', '?' ו־'*'." -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "×œ× ×™×›×•×œ להעלות ×ת הקובץ מכיוון שזו תקיה ×ו שמשקל הקובץ 0 בתי×" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "שגי×ת העל××”" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "סגירה" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "ממתין" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "קובץ ×חד × ×©×œ×—" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} ×§×‘×¦×™× × ×©×œ×—×™×" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "ההעל××” בוטלה." -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "מתבצעת כעת העל×ת קבצי×. עזיבה של העמוד תבטל ×ת ההעל××”." -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "קישור ××™× ×• יכול להיות ריק." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} ×§×‘×¦×™× × ×¡×¨×§×•" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "×ירעה שגי××” במהלך הסריקה" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "ש×" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "גודל" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "זמן ×©×™× ×•×™" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "תיקייה ×חת" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} תיקיות" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "קובץ ×חד" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} קבצי×" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "העל××”" + #: templates/admin.php:5 msgid "File handling" msgstr "טיפול בקבצי×" @@ -280,32 +261,40 @@ msgstr "תיקייה" msgid "From link" msgstr "מקישור" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "ביטול ההעל××”" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "×ין ×›×ן ×©×•× ×“×‘×¨. ×ולי ×‘×¨×¦×•× ×š להעלות משהו?" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "הורדה" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "העל××” גדולה מידי" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "×”×§×‘×¦×™× × ×¡×¨×§×™×, × × ×œ×”×ž×ª×™×Ÿ." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "הסריקה ×”× ×•×›×—×™×ª" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/he/files_trashbin.po b/l10n/he/files_trashbin.po new file mode 100644 index 00000000000..ecba90622ca --- /dev/null +++ b/l10n/he/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: he\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/he/settings.po b/l10n/he/settings.po index 312975f7b15..2fb85237b0f 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -91,7 +91,7 @@ msgstr "הפעל" msgid "Saving..." msgstr "שומר.." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "עברית" @@ -103,15 +103,15 @@ msgstr "הוספת ×”×™×™×©×•× ×©×œ×š" msgid "More Apps" msgstr "×™×™×©×•×ž×™× × ×•×¡×¤×™×" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "בחירת יישו×" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "צפה בעמוד ×”×™×©×•× ×‘ apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "ברישיון <span class=\"licence\"></span>לטובת <span class=\"author\"></span>" @@ -160,7 +160,7 @@ msgstr "הורד ×ª×•×›× ×” ל×× ×“×¨×•×יד" msgid "Download iOS Client" msgstr "הורד ×ª×•×›× ×” לiOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "ססמה" @@ -230,11 +230,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "פותח על די <a href=\"http://ownCloud.org/contact\" target=\"_blank\">קהילתownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">קוד המקור</a> מוגן ברישיון <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "ש×" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "קבוצות" @@ -246,26 +246,38 @@ msgstr "יצירה" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "×חר" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "×ž× ×”×œ הקבוצה" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "מחיקה" diff --git a/l10n/hi/core.po b/l10n/hi/core.po index 637cb66cc8d..3e666c18c78 100644 --- a/l10n/hi/core.po +++ b/l10n/hi/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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-30 00:23+0100\n" +"PO-Revision-Date: 2013-01-29 23:23+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" @@ -19,24 +19,24 @@ msgstr "" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -81,59 +81,135 @@ msgstr "" msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "" @@ -163,8 +239,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "" @@ -176,122 +252,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "पासवरà¥à¤¡" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "" @@ -443,87 +538,11 @@ msgstr "" msgid "Finish setup" msgstr "सेटअप समापà¥à¤¤ करे" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "" diff --git a/l10n/hi/files.po b/l10n/hi/files.po index 7e4cd2a3e6e..c56da3dc54c 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" @@ -17,65 +17,46 @@ msgstr "" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -83,151 +64,151 @@ msgstr "" msgid "Files" msgstr "" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "" + #: templates/admin.php:5 msgid "File handling" msgstr "" @@ -276,32 +257,40 @@ msgstr "" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/hi/files_trashbin.po b/l10n/hi/files_trashbin.po new file mode 100644 index 00000000000..81376782a72 --- /dev/null +++ b/l10n/hi/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: hi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/hi/settings.po b/l10n/hi/settings.po index b6697b94820..d03f926766d 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" @@ -87,7 +87,7 @@ msgstr "" msgid "Saving..." msgstr "" -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "" @@ -99,15 +99,15 @@ msgstr "" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -156,7 +156,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "पासवरà¥à¤¡" @@ -226,11 +226,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "" @@ -242,26 +242,38 @@ msgstr "" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "" diff --git a/l10n/hr/core.po b/l10n/hr/core.po index 5d5b9d249ff..050cbe3ac79 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -21,24 +21,24 @@ 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/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -83,59 +83,135 @@ msgstr "Nema odabranih kategorija za brisanje." msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "nedelja" + +#: js/config.php:32 +msgid "Monday" +msgstr "ponedeljak" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "utorak" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "srijeda" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Äetvrtak" + +#: js/config.php:32 +msgid "Friday" +msgstr "petak" + +#: js/config.php:32 +msgid "Saturday" +msgstr "subota" + +#: js/config.php:33 +msgid "January" +msgstr "SijeÄanj" + +#: js/config.php:33 +msgid "February" +msgstr "VeljaÄa" + +#: js/config.php:33 +msgid "March" +msgstr "Ožujak" + +#: js/config.php:33 +msgid "April" +msgstr "Travanj" + +#: js/config.php:33 +msgid "May" +msgstr "Svibanj" + +#: js/config.php:33 +msgid "June" +msgstr "Lipanj" + +#: js/config.php:33 +msgid "July" +msgstr "Srpanj" + +#: js/config.php:33 +msgid "August" +msgstr "Kolovoz" + +#: js/config.php:33 +msgid "September" +msgstr "Rujan" + +#: js/config.php:33 +msgid "October" +msgstr "Listopad" + +#: js/config.php:33 +msgid "November" +msgstr "Studeni" + +#: js/config.php:33 +msgid "December" +msgstr "Prosinac" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Postavke" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "sekundi prije" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "danas" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "juÄer" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "proÅ¡li mjesec" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "mjeseci" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "proÅ¡lu godinu" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "godina" @@ -165,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "PogreÅ¡ka" @@ -178,122 +254,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Podijeli" + +#: 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 "GreÅ¡ka prilikom djeljenja" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "GreÅ¡ka prilikom iskljuÄivanja djeljenja" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "GreÅ¡ka prilikom promjena prava" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Djeli sa" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Djeli preko link-a" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "ZaÅ¡titi lozinkom" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Lozinka" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Postavi datum isteka" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Datum isteka" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Dijeli preko email-a:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Osobe nisu pronaÄ‘ene" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Ponovo dijeljenje nije dopuÅ¡teno" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Makni djeljenje" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "može mjenjat" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "kontrola pristupa" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "kreiraj" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "ažuriraj" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "izbriÅ¡i" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "djeli" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "ZaÅ¡tita lozinkom" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "GreÅ¡ka prilikom brisanja datuma isteka" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "GreÅ¡ka prilikom postavljanja datuma isteka" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ownCloud resetiranje lozinke" @@ -445,87 +540,11 @@ msgstr "Poslužitelj baze podataka" msgid "Finish setup" msgstr "ZavrÅ¡i postavljanje" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "nedelja" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "ponedeljak" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "utorak" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "srijeda" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Äetvrtak" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "petak" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "subota" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "SijeÄanj" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "VeljaÄa" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Ožujak" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Travanj" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Svibanj" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Lipanj" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Srpanj" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Kolovoz" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Rujan" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Listopad" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Studeni" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Prosinac" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "web usluge pod vaÅ¡om kontrolom" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Odjava" diff --git a/l10n/hr/files.po b/l10n/hr/files.po index 317b0aa768d..92a63cc100b 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -20,65 +20,46 @@ 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:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "PoÅ¡alji" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Datoteka je poslana uspjeÅ¡no i bez pogreÅ¡aka" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Poslana datoteka izlazi iz okvira MAX_FILE_SIZE direktive postavljene u HTML obrascu" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Datoteka je poslana samo djelomiÄno" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Ni jedna datoteka nije poslana" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Nedostaje privremena mapa" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Neuspjelo pisanje na disk" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -86,151 +67,151 @@ msgstr "" msgid "Files" msgstr "Datoteke" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Prekini djeljenje" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "BriÅ¡i" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Promjeni ime" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "zamjeni" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "predloži ime" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "odustani" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "vrati" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Nemoguće poslati datoteku jer je prazna ili je direktorij" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "PogreÅ¡ka pri slanju" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Zatvori" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "U tijeku" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 datoteka se uÄitava" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Slanje poniÅ¡teno." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "greÄka prilikom skeniranja" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Naziv" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "VeliÄina" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Zadnja promjena" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "PoÅ¡alji" + #: templates/admin.php:5 msgid "File handling" msgstr "datoteka za rukovanje" @@ -279,32 +260,40 @@ msgstr "mapa" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Prekini upload" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Nema niÄega u ovoj mapi. PoÅ¡alji neÅ¡to!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Preuzmi" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Prijenos je preobiman" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Datoteke koje pokuÅ¡avate prenijeti prelaze maksimalnu veliÄinu za prijenos datoteka na ovom poslužitelju." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Datoteke se skeniraju, molimo priÄekajte." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Trenutno skeniranje" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/hr/files_trashbin.po b/l10n/hr/files_trashbin.po new file mode 100644 index 00000000000..8c1029fd3eb --- /dev/null +++ b/l10n/hr/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"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/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/hr/settings.po b/l10n/hr/settings.po index 58d40e80893..247ce35fc2e 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -90,7 +90,7 @@ msgstr "UkljuÄi" msgid "Saving..." msgstr "Spremanje..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__ime_jezika__" @@ -102,15 +102,15 @@ msgstr "Dodajte vaÅ¡u aplikaciju" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Odaberite Aplikaciju" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Pogledajte stranicu s aplikacijama na apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -159,7 +159,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Lozinka" @@ -229,11 +229,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Ime" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupe" @@ -245,26 +245,38 @@ msgstr "Izradi" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "ostali" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Grupa Admin" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "ObriÅ¡i" diff --git a/l10n/hu_HU/core.po b/l10n/hu_HU/core.po index 891c8694dd7..aa5dc243807 100644 --- a/l10n/hu_HU/core.po +++ b/l10n/hu_HU/core.po @@ -4,6 +4,7 @@ # # Translators: # Adam Toth <adazlord@gmail.com>, 2012. +# Laszlo Tornoci <torlasz@gmail.com>, 2013. # <mail@tamas-nagy.net>, 2011. # Peter Borsa <peter.borsa@gmail.com>, 2012. # Tamas Nagy <mail@tamas-nagy.net>, 2013. @@ -11,9 +12,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 08:13+0000\n" -"Last-Translator: Tamas Nagy <mail@tamas-nagy.net>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -21,24 +22,24 @@ msgstr "" "Language: hu_HU\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "%s felhasználó megosztott Önnel egy fájlt" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "%s felhasználó megosztott Önnel egy mappát" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "%s felhasználó megosztotta ezt az állományt Önnel: %s. A fájl innen tölthetÅ‘ le: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -83,59 +84,135 @@ msgstr "Nincs törlésre jelölt kategória" msgid "Error removing %s from favorites." msgstr "Nem sikerült a kedvencekbÅ‘l törölni ezt: %s" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "vasárnap" + +#: js/config.php:32 +msgid "Monday" +msgstr "hétfÅ‘" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "kedd" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "szerda" + +#: js/config.php:32 +msgid "Thursday" +msgstr "csütörtök" + +#: js/config.php:32 +msgid "Friday" +msgstr "péntek" + +#: js/config.php:32 +msgid "Saturday" +msgstr "szombat" + +#: js/config.php:33 +msgid "January" +msgstr "január" + +#: js/config.php:33 +msgid "February" +msgstr "február" + +#: js/config.php:33 +msgid "March" +msgstr "március" + +#: js/config.php:33 +msgid "April" +msgstr "április" + +#: js/config.php:33 +msgid "May" +msgstr "május" + +#: js/config.php:33 +msgid "June" +msgstr "június" + +#: js/config.php:33 +msgid "July" +msgstr "július" + +#: js/config.php:33 +msgid "August" +msgstr "augusztus" + +#: js/config.php:33 +msgid "September" +msgstr "szeptember" + +#: js/config.php:33 +msgid "October" +msgstr "október" + +#: js/config.php:33 +msgid "November" +msgstr "november" + +#: js/config.php:33 +msgid "December" +msgstr "december" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "BeállÃtások" -#: js/js.js:706 +#: js/js.js:762 msgid "seconds ago" msgstr "pár másodperce" -#: js/js.js:707 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 perce" -#: js/js.js:708 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} perce" -#: js/js.js:709 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 órája" -#: js/js.js:710 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} órája" -#: js/js.js:711 +#: js/js.js:767 msgid "today" msgstr "ma" -#: js/js.js:712 +#: js/js.js:768 msgid "yesterday" msgstr "tegnap" -#: js/js.js:713 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} napja" -#: js/js.js:714 +#: js/js.js:770 msgid "last month" msgstr "múlt hónapban" -#: js/js.js:715 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} hónapja" -#: js/js.js:716 +#: js/js.js:772 msgid "months ago" msgstr "több hónapja" -#: js/js.js:717 +#: js/js.js:773 msgid "last year" msgstr "tavaly" -#: js/js.js:718 +#: js/js.js:774 msgid "years ago" msgstr "több éve" @@ -165,8 +242,8 @@ msgid "The object type is not specified." msgstr "Az objektum tÃpusa nincs megadva." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Hiba" @@ -178,122 +255,141 @@ msgstr "Az alkalmazás neve nincs megadva." msgid "The required file {file} is not installed!" msgstr "A szükséges fájl: {file} nincs telepÃtve!" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Megosztás" + +#: 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 "Nem sikerült létrehozni a megosztást" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Nem sikerült visszavonni a megosztást" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Nem sikerült módosÃtani a jogosultságokat" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Megosztotta Önnel és a(z) {group} csoporttal: {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Megosztotta Önnel: {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Kivel osztom meg" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Link megadásával osztom meg" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Jelszóval is védem" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" -msgstr "Jelszó (tetszÅ‘leges)" +msgstr "Jelszó" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Email cÃmre küldjük el" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Küldjük el" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Legyen lejárati idÅ‘" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "A lejárati idÅ‘" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Megosztás emaillel:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Nincs találat" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Ezt az állományt csak a tulajdonosa oszthatja meg másokkal" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Megosztva {item}-ben {user}-rel" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "A megosztás visszavonása" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "módosÃthat" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "jogosultság" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "létrehoz" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "szerkeszt" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "töröl" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "megoszt" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Jelszóval van védve" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Nem sikerült a lejárati idÅ‘t törölni" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Nem sikerült a lejárati idÅ‘t beállÃtani" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Küldés ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Az emailt elküldtük" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ownCloud jelszó-visszaállÃtás" @@ -445,87 +541,11 @@ msgstr "Adatbázis szerver" msgid "Finish setup" msgstr "A beállÃtások befejezése" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "vasárnap" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "hétfÅ‘" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "kedd" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "szerda" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "csütörtök" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "péntek" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "szombat" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "január" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "február" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "március" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "április" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "május" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "június" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "július" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "augusztus" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "szeptember" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "október" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "november" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "december" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "webszolgáltatások saját kézben" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Kilépés" diff --git a/l10n/hu_HU/files.po b/l10n/hu_HU/files.po index 99731539f86..3fc7f3effbf 100644 --- a/l10n/hu_HU/files.po +++ b/l10n/hu_HU/files.po @@ -4,16 +4,18 @@ # # Translators: # Adam Toth <adazlord@gmail.com>, 2012. +# Akos <nagy.akos@libreoffice.ro>, 2013. # <gyonkibendeguz@gmail.com>, 2013. # <gyonkibendeguz@gmail.com>, 2013. +# Laszlo Tornoci <torlasz@gmail.com>, 2013. # <mail@tamas-nagy.net>, 2011. # Peter Borsa <peter.borsa@gmail.com>, 2011. 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 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -22,65 +24,46 @@ msgstr "" "Language: hu_HU\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Feltöltés" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Nem sikerült %s áthelyezése" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Nem lehet átnevezni a fájlt" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Nem történt feltöltés. Ismeretlen hiba" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "A fájlt sikerült feltölteni" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "A feltöltött fájl mérete meghaladja a php.ini állományban megadott upload_max_filesize paraméter értékét." -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "A feltöltött fájl mérete meghaladja a MAX_FILE_SIZE paramétert, ami a HTML formban került megadásra." -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Az eredeti fájlt csak részben sikerült feltölteni." -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Nem töltÅ‘dött fel semmi" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Hiányzik egy ideiglenes mappa" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Nem sikerült a lemezre történÅ‘ Ãrás" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Nincs elég szabad hely" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Érvénytelen mappa." @@ -88,151 +71,151 @@ msgstr "Érvénytelen mappa." msgid "Files" msgstr "Fájlok" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Megosztás visszavonása" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Törlés" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Ãtnevezés" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} már létezik" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "Ãrjuk fölül" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "legyen más neve" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "mégse" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "a(z) {new_name} állományt kicseréltük" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "visszavonás" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} fájlt kicseréltük ezzel: {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "{files} fájl megosztása visszavonva" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "{files} fájl törölve" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' fájlnév érvénytelen." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "A fájlnév nem lehet semmi." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Érvénytelen elnevezés. Ezek a karakterek nem használhatók: '\\', '/', '<', '>', ':', '\"', '|', '?' és '*'" -#: js/files.js:204 +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "A tároló tele van, a fájlok nem frissÃthetÅ‘ek vagy szinkronizálhatóak a jövÅ‘ben." + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "A tároló majdnem tele van ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." -msgstr "" +msgstr "Készül a letöltendÅ‘ állomány. Ez eltarthat egy ideig, ha nagyok a fájlok." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Nem tölthetÅ‘ fel, mert mappa volt, vagy 0 byte méretű" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Feltöltési hiba" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Bezárás" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Folyamatban" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 fájl töltÅ‘dik föl" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} fájl töltÅ‘dik föl" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "A feltöltést megszakÃtottuk." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "Az URL nem lehet semmi." -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "{count} fájlt találtunk" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "Hiba a fájllista-ellenÅ‘rzés során" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Név" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Méret" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "MódosÃtva" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 mappa" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} mappa" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 fájl" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} fájl" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Feltöltés" + #: templates/admin.php:5 msgid "File handling" msgstr "Fájlkezelés" @@ -281,32 +264,40 @@ msgstr "Mappa" msgid "From link" msgstr "Feltöltés linkrÅ‘l" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "A feltöltés megszakÃtása" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Itt nincs semmi. Töltsön fel valamit!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Letöltés" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "A feltöltés túl nagy" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "A feltöltendÅ‘ állományok mérete meghaladja a kiszolgálón megengedett maximális méretet." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "A fájllista ellenÅ‘rzése zajlik, kis türelmet!" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "EllenÅ‘rzés alatt" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/hu_HU/files_encryption.po b/l10n/hu_HU/files_encryption.po index 4aea6abf217..1a15c06b6fe 100644 --- a/l10n/hu_HU/files_encryption.po +++ b/l10n/hu_HU/files_encryption.po @@ -3,14 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Akos <nagy.akos@libreoffice.ro>, 2013. # Csaba Orban <vicsabi@gmail.com>, 2012. +# <gyonkibendeguz@gmail.com>, 2013. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-29 00:04+0100\n" +"PO-Revision-Date: 2013-01-28 11:15+0000\n" +"Last-Translator: akoscomp <nagy.akos@libreoffice.ro>\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" @@ -22,53 +24,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "átváltva a kliens oldalai titkosÃtásra" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +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 "" +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 "" +msgstr "Nem módosÃthatja a fájltitkosÃtási jelszavát a bejelentkezési jelszavára" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Válassza ki a titkosÃtási módot:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Kliens oldali titkosÃtás (biztonságosabb, de lehetetlenné teszi a fájlok elérését a böngészÅ‘bÅ‘l)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Kiszolgáló oldali titkosÃtás (lehetÅ‘vé teszi a fájlok elérését úgy böngészÅ‘bÅ‘l mint az asztali kliensbÅ‘l)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Semmi (semmilyen titkosÃtás)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Fontos: Ha egyszer kiválasztotta a titkosÃtás módját, többé már nem lehet megváltoztatni" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "Felhasználó specifikus (a felhasználó választhat)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/hu_HU/files_trashbin.po b/l10n/hu_HU/files_trashbin.po new file mode 100644 index 00000000000..1dcce92d773 --- /dev/null +++ b/l10n/hu_HU/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: hu_HU\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/hu_HU/lib.po b/l10n/hu_HU/lib.po index 2db700bdfcf..c3c29798b13 100644 --- a/l10n/hu_HU/lib.po +++ b/l10n/hu_HU/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-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 13:13+0000\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 <torlasz@gmail.com>\n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -46,7 +46,7 @@ msgstr "Admin" #: files.php:365 msgid "ZIP download is turned off." -msgstr "A ZIP-letöltés nem engedélyezett." +msgstr "A ZIP-letöltés nincs engedélyezve." #: files.php:366 msgid "Files need to be downloaded one by one." @@ -62,7 +62,7 @@ msgstr "A kiválasztott fájlok túl nagyok a zip tömörÃtéshez." #: helper.php:229 msgid "couldn't be determined" -msgstr "nem sikerült azonosÃtani" +msgstr "nem határozható meg" #: json.php:28 msgid "Application is not enabled" diff --git a/l10n/hu_HU/settings.po b/l10n/hu_HU/settings.po index 95751d84966..0e85339b48c 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -90,7 +90,7 @@ msgstr "Engedélyezés" msgid "Saving..." msgstr "Mentés..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__language_name__" @@ -102,15 +102,15 @@ msgstr "Az alkalmazás hozzáadása" msgid "More Apps" msgstr "További alkalmazások" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Válasszon egy alkalmazást" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Lásd apps.owncloud.com, alkalmazások oldal" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-a jogtuladonos <span class=\"author\"></span>" @@ -159,7 +159,7 @@ msgstr "Android kliens letöltése" msgid "Download iOS Client" msgstr "iOS kliens letöltése" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Jelszó" @@ -229,11 +229,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "A programot az <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud közösség</a> fejleszti. A <a href=\"https://github.com/owncloud\" target=\"_blank\">forráskód</a> az <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> feltételei mellett használható föl." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Név" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Csoportok" @@ -245,26 +245,38 @@ msgstr "Létrehozás" msgid "Default Storage" msgstr "Alapértelmezett tárhely" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Korlátlan" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Más" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Csoportadminisztrátor" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Tárhely" -#: templates/users.php:133 +#: 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 "Alapértelmezett" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Törlés" diff --git a/l10n/hu_HU/user_webdavauth.po b/l10n/hu_HU/user_webdavauth.po index e7f281281b7..f661c0e4ee0 100644 --- a/l10n/hu_HU/user_webdavauth.po +++ b/l10n/hu_HU/user_webdavauth.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Akos <nagy.akos@libreoffice.ro>, 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-29 00:04+0100\n" +"PO-Revision-Date: 2013-01-28 11:27+0000\n" +"Last-Translator: akoscomp <nagy.akos@libreoffice.ro>\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" @@ -19,7 +20,7 @@ msgstr "" #: templates/settings.php:3 msgid "WebDAV Authentication" -msgstr "" +msgstr "WebDAV hitelesÃtés" #: templates/settings.php:4 msgid "URL: http://" @@ -30,4 +31,4 @@ 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 "Az ownCloud elküldi a felhasználói fiók adatai a következÅ‘ URL-re. Ez a bÅ‘vÃtÅ‘modul leellenÅ‘rzi a választ és ha a HTTP hibakód nem 401 vagy 403 azaz érvénytelen hitelesÃtÅ‘, akkor minden más válasz érvényes lesz." diff --git a/l10n/ia/core.po b/l10n/ia/core.po index 984f28fcdf4..6359a737f3e 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -18,24 +18,24 @@ msgstr "" "Language: ia\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -80,59 +80,135 @@ msgstr "" msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Dominica" + +#: js/config.php:32 +msgid "Monday" +msgstr "Lunedi" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Martedi" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Mercuridi" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Jovedi" + +#: js/config.php:32 +msgid "Friday" +msgstr "Venerdi" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Sabbato" + +#: js/config.php:33 +msgid "January" +msgstr "januario" + +#: js/config.php:33 +msgid "February" +msgstr "Februario" + +#: js/config.php:33 +msgid "March" +msgstr "Martio" + +#: js/config.php:33 +msgid "April" +msgstr "April" + +#: js/config.php:33 +msgid "May" +msgstr "Mai" + +#: js/config.php:33 +msgid "June" +msgstr "Junio" + +#: js/config.php:33 +msgid "July" +msgstr "Julio" + +#: js/config.php:33 +msgid "August" +msgstr "Augusto" + +#: js/config.php:33 +msgid "September" +msgstr "Septembre" + +#: js/config.php:33 +msgid "October" +msgstr "Octobre" + +#: js/config.php:33 +msgid "November" +msgstr "Novembre" + +#: js/config.php:33 +msgid "December" +msgstr "Decembre" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Configurationes" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "" @@ -162,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "" @@ -175,122 +251,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: 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 +msgid "Shared" +msgstr "" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Contrasigno" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "Reinitialisation del contrasigno de ownCLoud" @@ -442,87 +537,11 @@ msgstr "Hospite de base de datos" msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Dominica" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Lunedi" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Martedi" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Mercuridi" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Jovedi" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Venerdi" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Sabbato" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "januario" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Februario" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Martio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "April" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Mai" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Junio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Julio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Augusto" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Septembre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Octobre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Novembre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Decembre" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "servicios web sub tu controlo" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Clauder le session" diff --git a/l10n/ia/files.po b/l10n/ia/files.po index c99fb7952dd..bbf335b0314 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -19,65 +19,46 @@ msgstr "" "Language: ia\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Incargar" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Le file incargate solmente esseva incargate partialmente" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Nulle file esseva incargate" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Manca un dossier temporari" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -85,151 +66,151 @@ msgstr "" msgid "Files" msgstr "Files" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Deler" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Clauder" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nomine" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Dimension" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Modificate" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Incargar" + #: templates/admin.php:5 msgid "File handling" msgstr "" @@ -278,32 +259,40 @@ msgstr "Dossier" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Nihil hic. Incarga alcun cosa!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Discargar" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Incargamento troppo longe" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/ia/files_trashbin.po b/l10n/ia/files_trashbin.po new file mode 100644 index 00000000000..42db681745c --- /dev/null +++ b/l10n/ia/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ia\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/ia/settings.po b/l10n/ia/settings.po index f0ff993fa27..78f954d5837 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -89,7 +89,7 @@ msgstr "" msgid "Saving..." msgstr "" -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Interlingua" @@ -101,15 +101,15 @@ msgstr "Adder tu application" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Selectionar un app" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -158,7 +158,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Contrasigno" @@ -228,11 +228,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nomine" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Gruppos" @@ -244,26 +244,38 @@ msgstr "Crear" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Altere" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Deler" diff --git a/l10n/id/core.po b/l10n/id/core.po index 0bf675c92b8..adf34a7cb25 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -21,24 +21,24 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -83,59 +83,135 @@ msgstr "Tidak ada kategori terpilih untuk penghapusan." msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "minggu" + +#: js/config.php:32 +msgid "Monday" +msgstr "senin" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "selasa" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "rabu" + +#: js/config.php:32 +msgid "Thursday" +msgstr "kamis" + +#: js/config.php:32 +msgid "Friday" +msgstr "jumat" + +#: js/config.php:32 +msgid "Saturday" +msgstr "sabtu" + +#: js/config.php:33 +msgid "January" +msgstr "Januari" + +#: js/config.php:33 +msgid "February" +msgstr "Februari" + +#: js/config.php:33 +msgid "March" +msgstr "Maret" + +#: js/config.php:33 +msgid "April" +msgstr "April" + +#: js/config.php:33 +msgid "May" +msgstr "Mei" + +#: js/config.php:33 +msgid "June" +msgstr "Juni" + +#: js/config.php:33 +msgid "July" +msgstr "Juli" + +#: js/config.php:33 +msgid "August" +msgstr "Agustus" + +#: js/config.php:33 +msgid "September" +msgstr "September" + +#: js/config.php:33 +msgid "October" +msgstr "Oktober" + +#: js/config.php:33 +msgid "November" +msgstr "Nopember" + +#: js/config.php:33 +msgid "December" +msgstr "Desember" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Setelan" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "beberapa detik yang lalu" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 menit lalu" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "hari ini" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "kemarin" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "bulan kemarin" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "beberapa bulan lalu" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "tahun kemarin" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "beberapa tahun lalu" @@ -165,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "gagal" @@ -178,122 +254,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "berbagi" + +#: 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 "gagal ketika membagikan" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "gagal ketika membatalkan pembagian" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "gagal ketika merubah perijinan" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "dibagikan dengan anda dan grup {group} oleh {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "dibagikan dengan anda oleh {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "bagikan dengan" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "bagikan dengan tautan" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "lindungi dengan kata kunci" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Password" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "set tanggal kadaluarsa" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "tanggal kadaluarsa" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "berbagi memlalui surel:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "tidak ada orang ditemukan" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "berbagi ulang tidak diperbolehkan" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "dibagikan dalam {item} dengan {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "batalkan berbagi" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "dapat merubah" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "kontrol akses" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "buat baru" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "baharui" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "hapus" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "bagikan" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "dilindungi kata kunci" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "gagal melepas tanggal kadaluarsa" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "gagal memasang tanggal kadaluarsa" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "reset password ownCloud" @@ -445,87 +540,11 @@ msgstr "Host database" msgid "Finish setup" msgstr "Selesaikan instalasi" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "minggu" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "senin" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "selasa" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "rabu" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "kamis" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "jumat" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "sabtu" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Januari" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Februari" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Maret" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "April" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Mei" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Juni" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Juli" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Agustus" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "September" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Oktober" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Nopember" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Desember" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "web service dibawah kontrol anda" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Keluar" diff --git a/l10n/id/files.po b/l10n/id/files.po index 31ff4ad0fe8..a8584662620 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -20,65 +20,46 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Unggah" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Tidak ada galat, berkas sukses diunggah" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "File yang diunggah melampaui directive MAX_FILE_SIZE yang disebutan dalam form HTML." -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Berkas hanya diunggah sebagian" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Tidak ada berkas yang diunggah" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Kehilangan folder temporer" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Gagal menulis ke disk" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -86,151 +67,151 @@ msgstr "" msgid "Files" msgstr "Berkas" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "batalkan berbagi" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Hapus" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "mengganti" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "batalkan" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "batal dikerjakan" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Gagal mengunggah berkas anda karena berupa direktori atau mempunyai ukuran 0 byte" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Terjadi Galat Pengunggahan" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "tutup" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Menunggu" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Pengunggahan dibatalkan." -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "tautan tidak boleh kosong" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nama" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Ukuran" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Dimodifikasi" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Unggah" + #: templates/admin.php:5 msgid "File handling" msgstr "Penanganan berkas" @@ -279,32 +260,40 @@ msgstr "Folder" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Batal mengunggah" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Tidak ada apa-apa di sini. Unggah sesuatu!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Unduh" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Unggahan terlalu besar" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Berkas yang anda coba unggah melebihi ukuran maksimum untuk pengunggahan berkas di server ini." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Berkas sedang dipindai, silahkan tunggu." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Sedang memindai" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/id/files_trashbin.po b/l10n/id/files_trashbin.po new file mode 100644 index 00000000000..671c1c77ee9 --- /dev/null +++ b/l10n/id/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/id/settings.po b/l10n/id/settings.po index 72ad4e872a7..a594ba52ada 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -91,7 +91,7 @@ msgstr "Aktifkan" msgid "Saving..." msgstr "Menyimpan..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__language_name__" @@ -103,15 +103,15 @@ msgstr "Tambahkan App anda" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Pilih satu aplikasi" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Lihat halaman aplikasi di apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -160,7 +160,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Password" @@ -230,11 +230,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nama" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Group" @@ -246,26 +246,38 @@ msgstr "Buat" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Lain-lain" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Admin Grup" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Hapus" diff --git a/l10n/is/core.po b/l10n/is/core.po index a575a9992a8..fa83addcf99 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -19,24 +19,24 @@ msgstr "" "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "Notandinn %s deildi skrá með þér" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "Notandinn %s deildi möppu með þér" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "Notandinn %s deildi skránni \"%s\" með þér. Hægt er að hlaða henni niður hér: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -81,59 +81,135 @@ msgstr "Enginn flokkur valinn til eyðingar." msgid "Error removing %s from favorites." msgstr "Villa við að fjarlægja %s úr eftirlæti." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Sunnudagur" + +#: js/config.php:32 +msgid "Monday" +msgstr "Mánudagur" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Þriðjudagur" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Miðvikudagur" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Fimmtudagur" + +#: js/config.php:32 +msgid "Friday" +msgstr "Föstudagur" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Laugardagur" + +#: js/config.php:33 +msgid "January" +msgstr "Janúar" + +#: js/config.php:33 +msgid "February" +msgstr "Febrúar" + +#: js/config.php:33 +msgid "March" +msgstr "Mars" + +#: js/config.php:33 +msgid "April" +msgstr "AprÃl" + +#: js/config.php:33 +msgid "May" +msgstr "MaÃ" + +#: js/config.php:33 +msgid "June" +msgstr "JúnÃ" + +#: js/config.php:33 +msgid "July" +msgstr "JúlÃ" + +#: js/config.php:33 +msgid "August" +msgstr "Ãgúst" + +#: js/config.php:33 +msgid "September" +msgstr "September" + +#: js/config.php:33 +msgid "October" +msgstr "Október" + +#: js/config.php:33 +msgid "November" +msgstr "Nóvember" + +#: js/config.php:33 +msgid "December" +msgstr "Desember" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Stillingar" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "sek sÃðan" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 min sÃðan" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} min sÃðan" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "Fyrir 1 klst." -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "fyrir {hours} klst." -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "à dag" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "à gær" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} dagar sÃðan" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "sÃðasta mánuði" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "fyrir {months} mánuðum" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "mánuðir sÃðan" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "sÃðasta ári" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "árum sÃðan" @@ -163,8 +239,8 @@ msgid "The object type is not specified." msgstr "Tegund ekki tilgreind" #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Villa" @@ -176,122 +252,141 @@ msgstr "Nafn forrits ekki tilgreint" msgid "The required file {file} is not installed!" msgstr "Umbeðina skráin {file} ekki tiltæk!" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Deila" + +#: 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 "Villa við deilingu" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Villa við að hætta deilingu" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Villa við að breyta aðgangsheimildum" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Deilt með þér og hópnum {group} af {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Deilt með þér af {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Deila með" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Deila með veftengli" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Verja með lykilorði" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Lykilorð" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Senda vefhlekk à tölvupóstu til notenda" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Senda" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Setja gildistÃma" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Gildir til" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Deila með tölvupósti:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Engir notendur fundust" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Endurdeiling er ekki leyfð" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Deilt með {item} ásamt {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Hætta deilingu" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "getur breytt" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "aðgangsstýring" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "mynda" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "uppfæra" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "eyða" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "deila" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Verja með lykilorði" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Villa við að aftengja gildistÃma" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Villa við að setja gildistÃma" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Sendi ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Tölvupóstur sendur" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "endursetja ownCloud lykilorð" @@ -443,87 +538,11 @@ msgstr "Netþjónn gagnagrunns" msgid "Finish setup" msgstr "Virkja uppsetningu" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Sunnudagur" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Mánudagur" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Þriðjudagur" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Miðvikudagur" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Fimmtudagur" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Föstudagur" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Laugardagur" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Janúar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Febrúar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Mars" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "AprÃl" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "MaÃ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "JúnÃ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "JúlÃ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Ãgúst" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "September" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Október" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Nóvember" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Desember" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "vefþjónusta undir þinni stjórn" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Útskrá" diff --git a/l10n/is/files.po b/l10n/is/files.po index 6501754dbc6..34313c0d99f 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -18,65 +18,46 @@ msgstr "" "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Senda inn" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Gat ekki fært %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Gat ekki endurskýrt skrá" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Engin skrá var send inn. Óþekkt villa." -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Engin villa, innsending heppnaðist" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Innsend skrá er stærri en upload_max stillingin à php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Innsenda skráin er stærri en MAX_FILE_SIZE sem skilgreint er à HTML sniðinu." -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Einungis hluti af innsendri skrá skilaði sér" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Engin skrá skilaði sér" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Vantar bráðabirgðamöppu" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Tókst ekki að skrifa á disk" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Ekki nægt pláss tiltækt" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Ógild mappa." @@ -84,151 +65,151 @@ msgstr "Ógild mappa." msgid "Files" msgstr "Skrár" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Hætta deilingu" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Eyða" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Endurskýra" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} er þegar til" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "yfirskrifa" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "stinga upp á nafni" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "hætta við" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "endurskýrði {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "afturkalla" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "yfirskrifaði {new_name} með {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "Hætti við deilingu á {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "eyddi {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' er ekki leyfilegt nafn." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Nafn skráar má ekki vera tómt" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Ógilt nafn, táknin '\\', '/', '<', '>', ':', '\"', '|', '?' og '*' eru ekki leyfð." -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Innsending á skrá mistókst, hugsanlega sendir þú möppu eða skráin er 0 bæti." -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Villa við innsendingu" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Loka" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "BÃður" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 skrá innsend" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} skrár innsendar" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Hætt við innsendingu." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "Vefslóð má ekki vera tóm." -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "{count} skrár skimaðar" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "villa við skimun" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nafn" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Stærð" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Breytt" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 mappa" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} möppur" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 skrá" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} skrár" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Senda inn" + #: templates/admin.php:5 msgid "File handling" msgstr "Meðhöndlun skrár" @@ -277,32 +258,40 @@ msgstr "Mappa" msgid "From link" msgstr "Af tengli" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Hætta við innsendingu" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Ekkert hér. Settu eitthvað inn!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Niðurhal" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Innsend skrá er of stór" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Skrárnar sem þú ert að senda inn eru stærri en hámarks innsendingarstærð á þessum netþjóni." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Verið er að skima skrár, vinsamlegast hinkraðu." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Er að skima" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/is/files_trashbin.po b/l10n/is/files_trashbin.po new file mode 100644 index 00000000000..2ff20172cbd --- /dev/null +++ b/l10n/is/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: is\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/is/settings.po b/l10n/is/settings.po index 0c0579cec5d..10370198069 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -88,7 +88,7 @@ msgstr "Virkja" msgid "Saving..." msgstr "Er að vista ..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__nafn_tungumáls__" @@ -100,15 +100,15 @@ msgstr "Bæta við forriti" msgid "More Apps" msgstr "Fleiri forrit" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Veldu forrit" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Skoða sÃðu forrits hjá apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-leyfi skráð af <span class=\"author\"></span>" @@ -157,7 +157,7 @@ msgstr "Hlaða niður Andoid hugbúnaði" msgid "Download iOS Client" msgstr "Hlaða niður iOS hugbúnaði" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Lykilorð" @@ -227,11 +227,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Þróað af <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud samfélaginu</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">forrita kóðinn</a> er skráðu með <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nafn" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Hópar" @@ -243,26 +243,38 @@ msgstr "Búa til" msgid "Default Storage" msgstr "Sjálfgefin gagnageymsla" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Ótakmarkað" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Annað" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Hópstjóri" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "gagnapláss" -#: templates/users.php:133 +#: 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 "Sjálfgefið" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Eyða" diff --git a/l10n/it/core.po b/l10n/it/core.po index 5db447c37b6..c1cb41fed87 100644 --- a/l10n/it/core.po +++ b/l10n/it/core.po @@ -6,15 +6,16 @@ # <cosenal@gmail.com>, 2011. # Francesco Apruzzese <cescoap@gmail.com>, 2011, 2012. # <marco@carnazzo.it>, 2011, 2012. +# <pgcloud@imballaggi.net>, 2013. # <rb.colombo@gmail.com>, 2011. # Vincenzo Reale <vinx.reale@gmail.com>, 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 07:30+0000\n" +"Last-Translator: pgcloud <pgcloud@imballaggi.net>\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" @@ -22,24 +23,24 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "L'utente %s ha condiviso un file con te" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "L'utente %s ha condiviso una cartella con te" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "L'utente %s ha condiviso il file \"%s\" con te. È disponibile per lo scaricamento qui: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -84,59 +85,135 @@ msgstr "Nessuna categoria selezionata per l'eliminazione." msgid "Error removing %s from favorites." msgstr "Errore durante la rimozione di %s dai preferiti." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Domenica" + +#: js/config.php:32 +msgid "Monday" +msgstr "Lunedì" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Martedì" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Mercoledì" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Giovedì" + +#: js/config.php:32 +msgid "Friday" +msgstr "Venerdì" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Sabato" + +#: js/config.php:33 +msgid "January" +msgstr "Gennaio" + +#: js/config.php:33 +msgid "February" +msgstr "Febbraio" + +#: js/config.php:33 +msgid "March" +msgstr "Marzo" + +#: js/config.php:33 +msgid "April" +msgstr "Aprile" + +#: js/config.php:33 +msgid "May" +msgstr "Maggio" + +#: js/config.php:33 +msgid "June" +msgstr "Giugno" + +#: js/config.php:33 +msgid "July" +msgstr "Luglio" + +#: js/config.php:33 +msgid "August" +msgstr "Agosto" + +#: js/config.php:33 +msgid "September" +msgstr "Settembre" + +#: js/config.php:33 +msgid "October" +msgstr "Ottobre" + +#: js/config.php:33 +msgid "November" +msgstr "Novembre" + +#: js/config.php:33 +msgid "December" +msgstr "Dicembre" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Impostazioni" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "secondi fa" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "Un minuto fa" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} minuti fa" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 ora fa" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} ore fa" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "oggi" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "ieri" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} giorni fa" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "mese scorso" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} mesi fa" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "mesi fa" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "anno scorso" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "anni fa" @@ -166,8 +243,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Errore" @@ -179,122 +256,141 @@ msgstr "Il nome dell'applicazione non è specificato." msgid "The required file {file} is not installed!" msgstr "Il file richiesto {file} non è installato!" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Condividi" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Shared" +msgstr "Condivisi" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Errore durante la condivisione" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Errore durante la rimozione della condivisione" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Errore durante la modifica dei permessi" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Condiviso con te e con il gruppo {group} da {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Condiviso con te da {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Condividi con" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Condividi con collegamento" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Proteggi con password" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Password" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Invia collegamento via email" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Invia" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Imposta data di scadenza" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Data di scadenza" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Condividi tramite email:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Non sono state trovate altre persone" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "La ri-condivisione non è consentita" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Condiviso in {item} con {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Rimuovi condivisione" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "può modificare" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "controllo d'accesso" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "creare" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "aggiornare" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "eliminare" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "condividere" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Protetta da password" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Errore durante la rimozione della data di scadenza" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Errore durante l'impostazione della data di scadenza" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Invio in corso..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Messaggio inviato" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "L'aggiornamento non è riuscito. Segnala il problema alla <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">comunità di ownCloud</a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "L'aggiornamento è stato effettuato correttamente. Stai per essere reindirizzato a ownCloud." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Ripristino password di ownCloud" @@ -446,87 +542,11 @@ msgstr "Host del database" msgid "Finish setup" msgstr "Termina la configurazione" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Domenica" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Lunedì" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Martedì" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Mercoledì" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Giovedì" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Venerdì" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Sabato" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Gennaio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Febbraio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Marzo" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Aprile" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Maggio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Giugno" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Luglio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Agosto" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Settembre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Ottobre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Novembre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Dicembre" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "servizi web nelle tue mani" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Esci" @@ -538,7 +558,7 @@ msgstr "Accesso automatico rifiutato." msgid "" "If you did not change your password recently, your account may be " "compromised!" -msgstr "Se non hai cambiato la password recentemente, il tuo account potrebbe essere stato compromesso." +msgstr "Se non hai cambiato la password recentemente, il tuo account potrebbe essere compromesso." #: templates/login.php:13 msgid "Please change your password to secure your account again." @@ -567,4 +587,4 @@ msgstr "successivo" #: templates/update.php:3 #, php-format msgid "Updating ownCloud to version %s, this may take a while." -msgstr "Aggiornamento di ownCloud alla versione %s in corso, potrebbe richiedere del tempo." +msgstr "Aggiornamento di ownCloud alla versione %s in corso, ciò potrebbe richiedere del tempo." diff --git a/l10n/it/files.po b/l10n/it/files.po index bf7aa473141..45e4a1587eb 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-01-21 00:04+0100\n" -"PO-Revision-Date: 2013-01-19 23:20+0000\n" -"Last-Translator: Vincenzo Reale <vinx.reale@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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,65 +21,46 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Carica" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Impossibile spostare %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Impossibile rinominare il file" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Nessun file è stato inviato. Errore sconosciuto" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Non ci sono errori, file caricato con successo" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Il file caricato supera la direttiva upload_max_filesize in php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Il file caricato supera il valore MAX_FILE_SIZE definito nel form HTML" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Il file è stato parzialmente caricato" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Nessun file è stato caricato" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Cartella temporanea mancante" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Scrittura su disco non riuscita" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Spazio disponibile insufficiente" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Cartella non valida." @@ -87,151 +68,151 @@ msgstr "Cartella non valida." msgid "Files" msgstr "File" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Rimuovi condivisione" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Elimina" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Rinomina" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} esiste già " -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "sostituisci" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "suggerisci nome" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "annulla" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "sostituito {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "annulla" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "sostituito {new_name} con {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "non condivisi {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "eliminati {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' non è un nome file valido." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Il nome del file non può essere vuoto." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Nome non valido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non sono consentiti." -#: js/files.js:204 +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "Lo spazio di archiviazione è pieno, i file non possono essere più aggiornati o sincronizzati!" + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "Lo spazio di archiviazione è quasi pieno ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "Il tuo scaricamento è in fase di preparazione. Ciò potrebbe richiedere del tempo se i file sono grandi." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Impossibile inviare il file poiché è una cartella o ha dimensione 0 byte" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Errore di invio" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Chiudi" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "In corso" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 file in fase di caricamento" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} file in fase di caricamentoe" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Invio annullato" -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "L'URL non può essere vuoto." -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "{count} file analizzati" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "errore durante la scansione" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nome" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Dimensione" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Modificato" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 cartella" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} cartelle" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 file" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} file" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Carica" + #: templates/admin.php:5 msgid "File handling" msgstr "Gestione file" @@ -280,32 +261,40 @@ msgstr "Cartella" msgid "From link" msgstr "Da collegamento" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Annulla invio" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Non c'è niente qui. Carica qualcosa!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Scarica" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Il file caricato è troppo grande" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "I file che stai provando a caricare superano la dimensione massima consentita su questo server." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Scansione dei file in corso, attendi" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Scansione corrente" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "Aggiornamento della cache del filesystem in corso..." diff --git a/l10n/it/files_encryption.po b/l10n/it/files_encryption.po index 06ffe73b73b..544caf9fd79 100644 --- a/l10n/it/files_encryption.po +++ b/l10n/it/files_encryption.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Vincenzo Reale <vinx.reale@gmail.com>, 2012. +# Vincenzo Reale <vinx.reale@gmail.com>, 2012-2013. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-28 00:04+0100\n" +"PO-Revision-Date: 2013-01-27 19:44+0000\n" +"Last-Translator: Vincenzo Reale <vinx.reale@gmail.com>\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" @@ -22,53 +22,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "passato alla cifratura lato client" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +msgstr "Converti la password di cifratura nella password di accesso" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +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 "" +msgstr "Impossibile convertire la password di cifratura nella password di accesso" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Scegli la modalità di cifratura." #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Cifratura lato client (più sicura ma rende impossibile accedere ai propri dati dall'interfaccia web)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Cifratura lato server (ti consente di accedere ai tuoi file dall'interfaccia web e dal client desktop)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Nessuna (senza alcuna cifratura)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Importante: una volta selezionata la modalità di cifratura non sarà possibile tornare indietro" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "Specificato dall'utente (lascia decidere all'utente)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/it/files_trashbin.po b/l10n/it/files_trashbin.po new file mode 100644 index 00000000000..b5021a55f50 --- /dev/null +++ b/l10n/it/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/it/settings.po b/l10n/it/settings.po index b8c1b46912e..117e005d4ac 100644 --- a/l10n/it/settings.po +++ b/l10n/it/settings.po @@ -9,14 +9,14 @@ # Jan-Christoph Borchardt <JanCBorchardt@fsfe.org>, 2011. # <marco@carnazzo.it>, 2011-2013. # <rb.colombo@gmail.com>, 2011. -# Vincenzo Reale <vinx.reale@gmail.com>, 2012. +# Vincenzo Reale <vinx.reale@gmail.com>, 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 08:30+0000\n" -"Last-Translator: ufic <marco@carnazzo.it>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 06:40+0000\n" +"Last-Translator: Vincenzo Reale <vinx.reale@gmail.com>\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" @@ -94,7 +94,7 @@ msgstr "Abilita" msgid "Saving..." msgstr "Salvataggio in corso..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Italiano" @@ -106,15 +106,15 @@ msgstr "Aggiungi la tua applicazione" msgid "More Apps" msgstr "Altre applicazioni" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Seleziona un'applicazione" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Vedere la pagina dell'applicazione su apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licenziato da <span class=\"author\"></span>" @@ -163,7 +163,7 @@ msgstr "Scarica client Android" msgid "Download iOS Client" msgstr "Scarica client iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Password" @@ -233,11 +233,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Sviluppato dalla <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunità di ownCloud</a>, il <a href=\"https://github.com/owncloud\" target=\"_blank\">codice sorgente</a> è licenziato nei termini della <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nome" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "Nome utente" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Gruppi" @@ -249,26 +249,38 @@ msgstr "Crea" msgid "Default Storage" msgstr "Archiviazione predefinita" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Illimitata" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Altro" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "Nome visualizzato" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Gruppi amministrati" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Archiviazione" -#: templates/users.php:133 +#: templates/users.php:97 +msgid "change display name" +msgstr "cambia il nome visualizzato" + +#: templates/users.php:101 +msgid "set new password" +msgstr "imposta una nuova password" + +#: templates/users.php:137 msgid "Default" msgstr "Predefinito" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Elimina" diff --git a/l10n/ja_JP/core.po b/l10n/ja_JP/core.po index e9ba6cfa4a5..8b2b2d4cb7d 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -20,24 +20,24 @@ msgstr "" "Language: ja_JP\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "ユーザ %s ã¯ã‚ãªãŸã¨ãƒ•ァイルを共有ã—ã¦ã„ã¾ã™" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "ユーザ %s ã¯ã‚ãªãŸã¨ãƒ•ォルダを共有ã—ã¦ã„ã¾ã™" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "ユーザ %s ã¯ã‚ãªãŸã¨ãƒ•ァイル \"%s\" を共有ã—ã¦ã„ã¾ã™ã€‚ã“ã¡ã‚‰ã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã§ãã¾ã™: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -82,59 +82,135 @@ msgstr "削除ã™ã‚‹ã‚«ãƒ†ã‚´ãƒªãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。" msgid "Error removing %s from favorites." msgstr "ãŠæ°—ã«å…¥ã‚Šã‹ã‚‰ %s ã®å‰Šé™¤ã‚¨ãƒ©ãƒ¼" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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 "1月" + +#: js/config.php:33 +msgid "February" +msgstr "2月" + +#: js/config.php:33 +msgid "March" +msgstr "3月" + +#: js/config.php:33 +msgid "April" +msgstr "4月" + +#: js/config.php:33 +msgid "May" +msgstr "5月" + +#: js/config.php:33 +msgid "June" +msgstr "6月" + +#: js/config.php:33 +msgid "July" +msgstr "7月" + +#: js/config.php:33 +msgid "August" +msgstr "8月" + +#: js/config.php:33 +msgid "September" +msgstr "9月" + +#: js/config.php:33 +msgid "October" +msgstr "10月" + +#: js/config.php:33 +msgid "November" +msgstr "11月" + +#: js/config.php:33 +msgid "December" +msgstr "12月" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "è¨å®š" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "ç§’å‰" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 分å‰" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} 分å‰" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 時間å‰" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} 時間å‰" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "今日" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "昨日" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} æ—¥å‰" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "一月å‰" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} 月å‰" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "月å‰" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "一年å‰" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "å¹´å‰" @@ -164,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "エラー" @@ -177,122 +253,141 @@ msgstr "アプリåãŒã—ã¦ã„ã•れã¦ã„ã¾ã›ã‚“。" msgid "The required file {file} is not installed!" msgstr "å¿…è¦ãªãƒ•ァイル {file} ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã¾ã›ã‚“ï¼" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "共有解除ã§ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿ" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "権é™å¤‰æ›´ã§ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿ" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "ã‚ãªãŸã¨ {owner} ã®ã‚°ãƒ«ãƒ¼ãƒ— {group} ã§å…±æœ‰ä¸" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "{owner} ã¨å…±æœ‰ä¸" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "共有者" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "URLリンクã§å…±æœ‰" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "パスワードä¿è·" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "パスワード" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "メールリンク" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "é€ä¿¡" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "有効期é™ã‚’è¨å®š" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "有効期é™" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "メール経由ã§å…±æœ‰:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "ユーザーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "å†å…±æœ‰ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "{item} 内㧠{user} ã¨å…±æœ‰ä¸" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "共有解除" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "編集å¯èƒ½" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "アクセス権é™" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "作æˆ" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "æ›´æ–°" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "削除" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "共有" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "パスワードä¿è·" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "有効期é™ã®æœªè¨å®šã‚¨ãƒ©ãƒ¼" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "有効期é™ã®è¨å®šã§ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿ" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "é€ä¿¡ä¸..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "メールをé€ä¿¡ã—ã¾ã—ãŸ" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "æ›´æ–°ã«æˆåŠŸã—ã¾ã—ãŸã€‚ã“ã®å•題を <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a> ã«ãƒ¬ãƒãƒ¼ãƒˆã—ã¦ãã ã•ã„。" + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "æ›´æ–°ã«æˆåŠŸã—ã¾ã—ãŸã€‚今ã™ãownCloudã«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã—ã¾ã™ã€‚" + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloudã®ãƒ‘スワードをリセットã—ã¾ã™" @@ -444,87 +539,11 @@ msgstr "データベースã®ãƒ›ã‚¹ãƒˆå" msgid "Finish setup" msgstr "セットアップを完了ã—ã¾ã™" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "æ—¥" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "月" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "ç«" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "æ°´" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "木" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "金" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "土" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "1月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "2月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "3月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "4月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "5月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "6月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "7月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "8月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "9月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "10月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "11月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "12月" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "管ç†ä¸‹ã«ã‚るウェブサービス" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "ãƒã‚°ã‚¢ã‚¦ãƒˆ" diff --git a/l10n/ja_JP/files.po b/l10n/ja_JP/files.po index d94cd87e309..9d8e49b3250 100644 --- a/l10n/ja_JP/files.po +++ b/l10n/ja_JP/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-01-23 00:05+0100\n" -"PO-Revision-Date: 2013-01-22 00:25+0000\n" -"Last-Translator: Daisuke Deguchi <ddeguchi@nagoya-u.jp>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -21,65 +21,46 @@ msgstr "" "Language: ja_JP\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "アップãƒãƒ¼ãƒ‰" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "%s を移動ã§ãã¾ã›ã‚“ã§ã—㟠― ã“ã®åå‰ã®ãƒ•ァイルã¯ã™ã§ã«å˜åœ¨ã—ã¾ã™" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "%s を移動ã§ãã¾ã›ã‚“ã§ã—ãŸ" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "ファイルåã®å¤‰æ›´ãŒã§ãã¾ã›ã‚“" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "ファイルã¯ä½•もアップãƒãƒ¼ãƒ‰ã•れã¦ã„ã¾ã›ã‚“ã€‚ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "エラーã¯ã‚りã¾ã›ã‚“。ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã¯æˆåŠŸã—ã¾ã—ãŸ" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "アップãƒãƒ¼ãƒ‰ã•れãŸãƒ•ァイルã¯php.ini ã® upload_max_filesize ã«è¨å®šã•れãŸã‚µã‚¤ã‚ºã‚’è¶…ãˆã¦ã„ã¾ã™:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "アップãƒãƒ¼ãƒ‰ã•れãŸãƒ•ァイルã¯HTMLã®ãƒ•ォームã«è¨å®šã•れãŸMAX_FILE_SIZEã«è¨å®šã•れãŸã‚µã‚¤ã‚ºã‚’è¶…ãˆã¦ã„ã¾ã™" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "ファイルã¯ä¸€éƒ¨åˆ†ã—ã‹ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã•れã¾ã›ã‚“ã§ã—ãŸ" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "ファイルã¯ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã•れã¾ã›ã‚“ã§ã—ãŸ" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "テンãƒãƒ©ãƒªãƒ•ォルダãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "ディスクã¸ã®æ›¸ãè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "利用å¯èƒ½ãªã‚¹ãƒšãƒ¼ã‚¹ãŒå分ã«ã‚りã¾ã›ã‚“" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "無効ãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã™ã€‚" @@ -87,151 +68,151 @@ msgstr "無効ãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã™ã€‚" msgid "Files" msgstr "ファイル" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "共有ã—ãªã„" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "削除" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "åå‰ã®å¤‰æ›´" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} ã¯ã™ã§ã«å˜åœ¨ã—ã¦ã„ã¾ã™" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "ç½®ãæ›ãˆ" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "推奨åç§°" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "ã‚ャンセル" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "{new_name} ã‚’ç½®æ›" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "å…ƒã«æˆ»ã™" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "{old_name} ã‚’ {new_name} ã«ç½®æ›" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "未共有 {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "削除 {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' ã¯ç„¡åйãªãƒ•ァイルåã§ã™ã€‚" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "ファイルåを空ã«ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "無効ãªåå‰ã€'\\', '/', '<', '>', ':', '\"', '|', '?', '*' ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。" -#: js/files.js:204 +#: 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 "ã‚ãªãŸã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã¯ã»ã¼ä¸€æ¯ã§ã™ï¼ˆ{usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "ダウンãƒãƒ¼ãƒ‰ã®æº–å‚™ä¸ã§ã™ã€‚ファイルサイズãŒå¤§ãã„å ´åˆã¯å°‘ã—æ™‚é–“ãŒã‹ã‹ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。" -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "ディレクトリもã—ãã¯0ãƒã‚¤ãƒˆã®ãƒ•ァイルã¯ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "アップãƒãƒ¼ãƒ‰ã‚¨ãƒ©ãƒ¼" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "é–‰ã˜ã‚‹" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "ä¿ç•™" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "ファイルを1ã¤ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ä¸" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} ファイルをアップãƒãƒ¼ãƒ‰ä¸" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "アップãƒãƒ¼ãƒ‰ã¯ã‚ャンセルã•れã¾ã—ãŸã€‚" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "ファイル転é€ã‚’実行ä¸ã§ã™ã€‚今ã“ã®ãƒšãƒ¼ã‚¸ã‹ã‚‰ç§»å‹•ã™ã‚‹ã¨ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ãŒä¸æ¢ã•れã¾ã™ã€‚" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URLã¯ç©ºã«ã§ãã¾ã›ã‚“。" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "無効ãªãƒ•ォルダåã§ã™ã€‚'Shared' ã®åˆ©ç”¨ã¯ ownCloud ãŒäºˆç´„済ã¿ã§ã™ã€‚" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} ファイルをスã‚ャン" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "スã‚ャンä¸ã®ã‚¨ãƒ©ãƒ¼" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "åå‰" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "サイズ" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "更新日時" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 フォルダ" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} フォルダ" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 ファイル" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} ファイル" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "アップãƒãƒ¼ãƒ‰" + #: templates/admin.php:5 msgid "File handling" msgstr "ファイルæ“作" @@ -280,32 +261,40 @@ msgstr "フォルダ" msgid "From link" msgstr "リンク" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "アップãƒãƒ¼ãƒ‰ã‚’ã‚ャンセル" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "ã“ã“ã«ã¯ä½•ã‚‚ã‚りã¾ã›ã‚“。何ã‹ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã—ã¦ãã ã•ã„。" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "ダウンãƒãƒ¼ãƒ‰" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "ファイルサイズãŒå¤§ãã™ãŽã¾ã™" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "ファイルをスã‚ャンã—ã¦ã„ã¾ã™ã€ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„。" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "スã‚ャンä¸" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/ja_JP/files_encryption.po b/l10n/ja_JP/files_encryption.po index 99e1f305cb7..2c42c902059 100644 --- a/l10n/ja_JP/files_encryption.po +++ b/l10n/ja_JP/files_encryption.po @@ -4,13 +4,14 @@ # # Translators: # Daisuke Deguchi <ddeguchi@is.nagoya-u.ac.jp>, 2012. +# Daisuke Deguchi <ddeguchi@nagoya-u.jp>, 2013. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-24 00:06+0100\n" +"PO-Revision-Date: 2013-01-23 03:07+0000\n" +"Last-Translator: Daisuke Deguchi <ddeguchi@nagoya-u.jp>\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" @@ -22,53 +23,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +msgstr "変æ›ã‚’完了ã™ã‚‹ãŸã‚ã«ã€ownCloud クライアントã«åˆ‡ã‚Šæ›¿ãˆã¦ã€æš—å·åŒ–パスワードを変更ã—ã¦ãã ã•ã„。" #: js/settings-personal.js:17 msgid "switched to client side encryption" -msgstr "" +msgstr "ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚µã‚¤ãƒ‰ã®æš—å·åŒ–ã«åˆ‡ã‚Šæ›¿ãˆã¾ã—ãŸ" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +msgstr "æš—å·åŒ–パスワードをãƒã‚°ã‚¤ãƒ³ãƒ‘スワードã«å¤‰æ›´" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +msgstr "パスワードを確èªã—ã¦ã‚‚ã†ä¸€åº¦è¡Œãªã£ã¦ãã ã•ã„。" #: js/settings-personal.js:25 msgid "Could not change your file encryption password to your login password" -msgstr "" +msgstr "ファイル暗å·åŒ–パスワードをãƒã‚°ã‚¤ãƒ³ãƒ‘スワードã«å¤‰æ›´ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "æš—å·åŒ–ãƒ¢ãƒ¼ãƒ‰ã‚’é¸æŠž:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚µã‚¤ãƒ‰ã®æš—å·åŒ–(最もセã‚ュアã§ã™ãŒã€WEBインターフェースã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããªããªã‚Šã¾ã™ï¼‰" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "サーãƒã‚µã‚¤ãƒ‰æš—å·åŒ–(WEBインターフェースãŠã‚ˆã³ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—クライアントã‹ã‚‰ãƒ•ァイルã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ï¼‰" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "æš—å·åŒ–ç„¡ã—(何も暗å·åŒ–ã—ã¾ã›ã‚“)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "é‡è¦: 一度暗å·åŒ–ã‚’é¸æŠžã—ã¦ã—ã¾ã†ã¨ã€ã‚‚ã¨ã«æˆ»ã™æ–¹æ³•ã¯ã‚りã¾ã›ã‚“" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "ユーザ指定(ユーザãŒé¸ã¹ã‚‹ã‚ˆã†ã«ã™ã‚‹ï¼‰" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/ja_JP/files_trashbin.po b/l10n/ja_JP/files_trashbin.po new file mode 100644 index 00000000000..67b3cb9aa10 --- /dev/null +++ b/l10n/ja_JP/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: ja_JP\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/ja_JP/settings.po b/l10n/ja_JP/settings.po index 69bbdf54d2d..5219c67a40f 100644 --- a/l10n/ja_JP/settings.po +++ b/l10n/ja_JP/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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -91,7 +91,7 @@ msgstr "有効" msgid "Saving..." msgstr "ä¿å˜ä¸..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Japanese (日本語)" @@ -103,15 +103,15 @@ msgstr "ã‚¢ãƒ—ãƒªã‚’è¿½åŠ " msgid "More Apps" msgstr "ã•らã«ã‚¢ãƒ—リを表示" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "ã‚¢ãƒ—ãƒªã‚’é¸æŠžã—ã¦ãã ã•ã„" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "apps.owncloud.com ã§ã‚¢ãƒ—リケーションã®ãƒšãƒ¼ã‚¸ã‚’見ã¦ãã ã•ã„" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-ライセンス: <span class=\"author\"></span>" @@ -160,7 +160,7 @@ msgstr "Androidクライアントをダウンãƒãƒ¼ãƒ‰" msgid "Download iOS Client" msgstr "iOSクライアントをダウンãƒãƒ¼ãƒ‰" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "パスワード" @@ -230,11 +230,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "<a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>ã«ã‚ˆã‚Šé–‹ç™ºã•れã¦ã„ã¾ã™ã€<a href=\"https://github.com/owncloud\" target=\"_blank\">ソースコード</a>ライセンスã¯ã€<a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> ライセンスã«ã‚ˆã‚Šæä¾›ã•れã¦ã„ã¾ã™ã€‚" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "åå‰" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "グループ" @@ -246,26 +246,38 @@ msgstr "作æˆ" msgid "Default Storage" msgstr "デフォルトストレージ" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "無制é™" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "ãã®ä»–" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "グループ管ç†è€…" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "ストレージ" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "削除" diff --git a/l10n/ka_GE/core.po b/l10n/ka_GE/core.po index 19c7defb404..8400725e1df 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" @@ -18,24 +18,24 @@ msgstr "" "Language: ka_GE\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -80,59 +80,135 @@ msgstr "სáƒáƒ ედáƒáƒ¥áƒ¢áƒ˜áƒ ებელი კáƒáƒ¢áƒ”გáƒáƒ ირmsgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "პáƒáƒ áƒáƒ›áƒ”ტრები" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "წáƒáƒ›áƒ˜áƒ¡ წინ" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 წუთის წინ" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} წუთის წინ" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "დღეს" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "გუშინ" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} დღის წინ" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "გáƒáƒ¡áƒ£áƒš თვეში" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "თვის წინ" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "ბáƒáƒšáƒ წელს" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "წლის წინ" @@ -162,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "შეცდáƒáƒ›áƒ" @@ -175,122 +251,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "შეცდáƒáƒ›áƒ გáƒáƒ–იáƒáƒ ების გáƒáƒ£áƒ¥áƒ›áƒ”ბის დრáƒáƒ¡" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "შეცდáƒáƒ›áƒ დáƒáƒ¨áƒ•ების ცვლილების დრáƒáƒ¡" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "გáƒáƒ£áƒ–იáƒáƒ ე" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "გáƒáƒ£áƒ–იáƒáƒ ე ლინკით" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "პáƒáƒ áƒáƒšáƒ˜áƒ— დáƒáƒªáƒ•áƒ" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "პáƒáƒ áƒáƒšáƒ˜" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "მიუთითე ვáƒáƒ“ის გáƒáƒ¡áƒ•ლის დრáƒ" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "ვáƒáƒ“ის გáƒáƒ¡áƒ•ლის დრáƒ" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "გáƒáƒáƒ–იáƒáƒ ე მეილზე" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "გვერდი áƒáƒ áƒáƒ ის ნáƒáƒžáƒáƒ•ნი" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "მეáƒáƒ ეჯერგáƒáƒ–იáƒáƒ ებრáƒáƒ áƒáƒ ის დáƒáƒ¨áƒ•ებული" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "გáƒáƒ–იáƒáƒ ების მáƒáƒ®áƒ¡áƒœáƒ" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "შეგიძლირშეცვლáƒ" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "დáƒáƒ¨áƒ•ების კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "შექმნáƒ" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "წáƒáƒ¨áƒšáƒ" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "გáƒáƒ–იáƒáƒ ებáƒ" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "პáƒáƒ áƒáƒšáƒ˜áƒ— დáƒáƒªáƒ£áƒšáƒ˜" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "შეცდáƒáƒ›áƒ ვáƒáƒ“ის გáƒáƒ¡áƒ•ლის მáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡ დრáƒáƒ¡" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "შეცდáƒáƒ›áƒ ვáƒáƒ“ის გáƒáƒ¡áƒ•ლის მითითების დრáƒáƒ¡" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ownCloud პáƒáƒ áƒáƒšáƒ˜áƒ¡ შეცვლáƒ" @@ -442,87 +537,11 @@ msgstr "ბáƒáƒ–ის ჰáƒáƒ¡áƒ¢áƒ˜" msgid "Finish setup" msgstr "კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ˜áƒ¡ დáƒáƒ¡áƒ ულებáƒ" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "კვირáƒ" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "áƒáƒ შáƒáƒ‘áƒáƒ—ი" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "ხუთშáƒáƒ‘áƒáƒ—ი" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "შáƒáƒ‘áƒáƒ—ი" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "იáƒáƒœáƒ•áƒáƒ ი" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "თებერვáƒáƒšáƒ˜" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "მáƒáƒ ტი" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "áƒáƒžáƒ ილი" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "მáƒáƒ˜áƒ¡áƒ˜" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "ივნისი" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "ივლისი" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "áƒáƒ’ვისტáƒ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "სექტემბერი" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "ნáƒáƒ”მბერი" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "დეკემბერი" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "თქვენი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ ქვეშ მყáƒáƒ¤áƒ˜ ვებ სერვისები" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "გáƒáƒ›áƒáƒ¡áƒ•ლáƒ" diff --git a/l10n/ka_GE/files.po b/l10n/ka_GE/files.po index a789775653e..1fad0f39af9 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" @@ -18,65 +18,46 @@ msgstr "" "Language: ka_GE\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "áƒáƒ¢áƒ•ირთვáƒ" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "áƒáƒáƒªáƒ“áƒáƒ›áƒ áƒáƒ დáƒáƒ¤áƒ˜áƒ¥áƒ¡áƒ˜áƒ დáƒ, ფáƒáƒ˜áƒšáƒ˜ წáƒáƒ მáƒáƒ¢áƒ”ბით áƒáƒ˜áƒ¢áƒ•ირთáƒ" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "áƒáƒ¢áƒ•ირთული ფáƒáƒ˜áƒšáƒ˜ áƒáƒáƒáƒ ბებს MAX_FILE_SIZE დირექტივáƒáƒ¡, რáƒáƒ›áƒ”ლიც მითითებულირHTML ფáƒáƒ მáƒáƒ¨áƒ˜" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "áƒáƒ¢áƒ•ირთული ფáƒáƒ˜áƒšáƒ˜ მხáƒáƒšáƒáƒ“ ნáƒáƒ¬áƒ˜áƒšáƒáƒ‘რივ áƒáƒ˜áƒ¢áƒ•ირთáƒ" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "ფáƒáƒ˜áƒšáƒ˜ áƒáƒ áƒáƒ˜áƒ¢áƒ•ირთáƒ" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "დრáƒáƒ”ბითი სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე áƒáƒ áƒáƒ სებáƒáƒ‘ს" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "შეცდáƒáƒ›áƒ დისკზე ჩáƒáƒ¬áƒ”რისáƒáƒ¡" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -84,151 +65,151 @@ msgstr "" msgid "Files" msgstr "ფáƒáƒ˜áƒšáƒ”ბი" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "გáƒáƒ–იáƒáƒ ების მáƒáƒ®áƒ¡áƒœáƒ" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "წáƒáƒ¨áƒšáƒ" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "გáƒáƒ“áƒáƒ ქმევáƒ" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} უკვე áƒáƒ სებáƒáƒ‘ს" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "შეცვლáƒ" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "სáƒáƒ®áƒ”ლის შემáƒáƒ—áƒáƒ•áƒáƒ–ებáƒ" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "უáƒáƒ ყáƒáƒ¤áƒ" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "{new_name} შეცვლილიáƒ" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "დáƒáƒ‘რუნებáƒ" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} შეცვლილირ{old_name}–ით" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "გáƒáƒ–იáƒáƒ ებრმáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜ {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "თქვენი ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•ირთვრვერმáƒáƒ®áƒ”რხდáƒ. ის áƒáƒ ის სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე დრშეიცáƒáƒ•ს 0 ბáƒáƒ˜áƒ¢áƒ¡" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "შეცდáƒáƒ›áƒ áƒáƒ¢áƒ•ირთვისáƒáƒ¡" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "დáƒáƒ®áƒ£áƒ ვáƒ" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "მáƒáƒªáƒ“ის რეჟიმში" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•ირთვáƒ" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} ფáƒáƒ˜áƒšáƒ˜ იტვირთებáƒ" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "áƒáƒ¢áƒ•ირთვრშეჩერებულ იქნáƒ." -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "მიმდინáƒáƒ ეáƒáƒ‘ს ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•ირთვáƒ. სხვრგვერდზე გáƒáƒ“áƒáƒ¡áƒ•ლრგáƒáƒ›áƒáƒ˜áƒ¬áƒ•ევს áƒáƒ¢áƒ•ირთვის შეჩერებáƒáƒ¡" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} ფáƒáƒ˜áƒšáƒ˜ სკáƒáƒœáƒ˜áƒ ებულიáƒ" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "შეცდáƒáƒ›áƒ სკáƒáƒœáƒ˜áƒ ებისáƒáƒ¡" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "სáƒáƒ®áƒ”ლი" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "ზáƒáƒ›áƒ" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "შეცვლილიáƒ" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 ფáƒáƒ˜áƒšáƒ˜" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} ფáƒáƒ˜áƒšáƒ˜" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "áƒáƒ¢áƒ•ირთვáƒ" + #: templates/admin.php:5 msgid "File handling" msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒ" @@ -277,32 +258,40 @@ msgstr "სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "áƒáƒ¢áƒ•ირთვის გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "áƒáƒ¥ áƒáƒ áƒáƒ¤áƒ”რი áƒáƒ áƒáƒ ის. áƒáƒ¢áƒ•ირთე რáƒáƒ›áƒ”!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "ჩáƒáƒ›áƒáƒ¢áƒ•ირთვáƒ" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "áƒáƒ¡áƒáƒ¢áƒ•ირთი ფáƒáƒ˜áƒšáƒ˜ ძáƒáƒšáƒ˜áƒáƒœ დიდიáƒ" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "მიმდინáƒáƒ ეáƒáƒ‘ს ფáƒáƒ˜áƒšáƒ”ბის სკáƒáƒœáƒ˜áƒ ებáƒ, გთხáƒáƒ•თ დáƒáƒ”ლáƒáƒ“áƒáƒ—." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "მიმდინáƒáƒ ე სკáƒáƒœáƒ˜áƒ ებáƒ" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/ka_GE/files_trashbin.po b/l10n/ka_GE/files_trashbin.po new file mode 100644 index 00000000000..cab751104bb --- /dev/null +++ b/l10n/ka_GE/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka_GE\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/ka_GE/settings.po b/l10n/ka_GE/settings.po index 4fe1200ec3c..e81a43d6548 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" @@ -88,7 +88,7 @@ msgstr "ჩáƒáƒ თვáƒ" msgid "Saving..." msgstr "შენáƒáƒ®áƒ•áƒ..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__language_name__" @@ -100,15 +100,15 @@ msgstr "დáƒáƒáƒ›áƒáƒ¢áƒ” შენი áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ" msgid "More Apps" msgstr "უფრრმეტი áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბი" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "áƒáƒ˜áƒ ჩიეთ áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "ნáƒáƒ®áƒ”თ áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ გვერდი apps.owncloud.com –ზე" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-ლიცენსირებულირ<span class=\"author\"></span>" @@ -157,7 +157,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "პáƒáƒ áƒáƒšáƒ˜" @@ -227,11 +227,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "სáƒáƒ®áƒ”ლი" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "ჯგუფი" @@ -243,26 +243,38 @@ msgstr "შექმნáƒ" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "სხვáƒ" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "ჯგუფის áƒáƒ“მინისტრáƒáƒ¢áƒáƒ ი" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "წáƒáƒ¨áƒšáƒ" diff --git a/l10n/ko/core.po b/l10n/ko/core.po index 5e2b5617dd6..f4e1345570a 100644 --- a/l10n/ko/core.po +++ b/l10n/ko/core.po @@ -6,14 +6,15 @@ # <aoiob4305@gmail.com>, 2013. # 남ìžì‚¬ëžŒ <cessnagi@gmail.com>, 2012. # <limonade83@gmail.com>, 2012. +# Park Shinjo <kde@peremen.name>, 2013. # Shinjo Park <kde@peremen.name>, 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 <owncloud-bot@tmit.eu>\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 <kde@peremen.name>\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" @@ -21,29 +22,29 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" -msgstr "User %s ê°€ ë‹¹ì‹ ê³¼ 파ì¼ì„ ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤." +msgstr "%s ë‹˜ì´ íŒŒì¼ì„ ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" -msgstr "User %s ê°€ ë‹¹ì‹ ê³¼ í´ë”를 ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤." +msgstr "%s ë‹˜ì´ í´ë”를 ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" -msgstr "User %s ê°€ íŒŒì¼ \"%s\"를 ë‹¹ì‹ ê³¼ ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤. 다운로드는 여기서 %s í• ìˆ˜ 있습니다." +msgstr "%s ë‹˜ì´ íŒŒì¼ \"%s\"ì„(를) ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤. 여기ì—서 ë‹¤ìš´ë¡œë“œí• ìˆ˜ 있습니다: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " "here: %s" -msgstr "User %s ê°€ í´ë” \"%s\"를 ë‹¹ì‹ ê³¼ ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤. 다운로드는 여기서 %s í• ìˆ˜ 있습니다." +msgstr "%s ë‹˜ì´ í´ë” \"%s\"ì„(를) ê³µìœ í•˜ì˜€ìŠµë‹ˆë‹¤. 여기ì—서 ë‹¤ìš´ë¡œë“œí• ìˆ˜ 있습니다: %s" #: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 msgid "Category type not provided." @@ -83,59 +84,135 @@ msgstr "ì‚ì œí• ë¶„ë¥˜ë¥¼ ì„ íƒí•˜ì§€ 않았습니다." msgid "Error removing %s from favorites." msgstr "책갈피ì—서 %sì„(를) ì‚ì œí• ìˆ˜ 없었습니다." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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 "1ì›”" + +#: js/config.php:33 +msgid "February" +msgstr "2ì›”" + +#: js/config.php:33 +msgid "March" +msgstr "3ì›”" + +#: js/config.php:33 +msgid "April" +msgstr "4ì›”" + +#: js/config.php:33 +msgid "May" +msgstr "5ì›”" + +#: js/config.php:33 +msgid "June" +msgstr "6ì›”" + +#: js/config.php:33 +msgid "July" +msgstr "7ì›”" + +#: js/config.php:33 +msgid "August" +msgstr "8ì›”" + +#: js/config.php:33 +msgid "September" +msgstr "9ì›”" + +#: js/config.php:33 +msgid "October" +msgstr "10ì›”" + +#: js/config.php:33 +msgid "November" +msgstr "11ì›”" + +#: js/config.php:33 +msgid "December" +msgstr "12ì›”" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "ì„¤ì •" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "ì´ˆ ì „" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1ë¶„ ì „" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes}ë¶„ ì „" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1시간 ì „" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours}시간 ì „" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "오늘" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "ì–´ì œ" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days}ì¼ ì „" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "지난 달" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months}개월 ì „" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "개월 ì „" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "작년" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "ë…„ ì „" @@ -165,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "오류" @@ -178,122 +255,141 @@ msgstr "앱 ì´ë¦„ì´ ì§€ì •ë˜ì§€ 않았습니다." msgid "The required file {file} is not installed!" msgstr "필요한 íŒŒì¼ {file}ì´(ê°€) 설치ë˜ì§€ 않았습니다!" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "ê³µìœ í•´ì œí•˜ëŠ” 중 오류 ë°œìƒ" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "권한 변경하는 중 오류 ë°œìƒ" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "{owner} ë‹˜ì´ ì—¬ëŸ¬ë¶„ ë° ê·¸ë£¹ {group}와(ê³¼) ê³µìœ ì¤‘" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "{owner} ë‹˜ì´ ê³µìœ ì¤‘" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "다ìŒìœ¼ë¡œ ê³µìœ " -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "URL ë§í¬ë¡œ ê³µìœ " -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "암호 보호" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "암호" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "ì´ë©”ì¼ ì£¼ì†Œ" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "ì „ì†¡" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "만료 ë‚ ì§œ ì„¤ì •" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "만료 ë‚ ì§œ" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "ì´ë©”ì¼ë¡œ ê³µìœ :" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "ë°œê²¬ëœ ì‚¬ëžŒ ì—†ìŒ" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "다시 ê³µìœ í• ìˆ˜ 없습니다" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "{user} 님과 {item}ì—서 ê³µìœ ì¤‘" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "ê³µìœ í•´ì œ" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "편집 가능" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "ì ‘ê·¼ ì œì–´" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "만들기" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "ì—…ë°ì´íЏ" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "ì‚ì œ" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "ê³µìœ " -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "암호로 보호ë¨" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "만료 ë‚ ì§œ í•´ì œ 오류" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "만료 ë‚ ì§œ ì„¤ì • 오류" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "ì „ì†¡ 중..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "ì´ë©”ì¼ ë°œì†¡ë¨" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "ì—…ë°ì´íŠ¸ê°€ 실패하였습니다. ì´ ë¬¸ì œë¥¼ <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud 커뮤니티</a>ì— ë³´ê³ í•´ 주ì‹ì‹œì˜¤." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "ì—…ë°ì´íŠ¸ê°€ 성공하였습니다. ownCloud로 ëŒì•„갑니다." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud 암호 ìž¬ì„¤ì •" @@ -445,87 +541,11 @@ msgstr "ë°ì´í„°ë² ì´ìФ 호스트" msgid "Finish setup" msgstr "설치 완료" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "ì¼ìš”ì¼" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "월요ì¼" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "화요ì¼" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "수요ì¼" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "목요ì¼" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "금요ì¼" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "í† ìš”ì¼" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "1ì›”" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "2ì›”" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "3ì›”" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "4ì›”" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "5ì›”" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "6ì›”" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "7ì›”" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "8ì›”" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "9ì›”" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "10ì›”" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "11ì›”" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "12ì›”" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "ë‚´ê°€ 관리하는 웹 서비스" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "로그아웃" @@ -566,4 +586,4 @@ msgstr "다ìŒ" #: templates/update.php:3 #, php-format msgid "Updating ownCloud to version %s, this may take a while." -msgstr "ownCloud 를 ë²„ì ¼ %s로 ì—…ë°ì´íЏ 하는 중, ì‹œê°„ì´ ì†Œìš”ë©ë‹ˆë‹¤." +msgstr "ownCloud를 ë²„ì „ %s(으)로 ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤. ìž ì‹œ ê¸°ë‹¤ë ¤ 주ì‹ì‹œì˜¤." diff --git a/l10n/ko/files.po b/l10n/ko/files.po index 5678e11882d..cc5153e34c8 100644 --- a/l10n/ko/files.po +++ b/l10n/ko/files.po @@ -7,13 +7,14 @@ # 남ìžì‚¬ëžŒ <cessnagi@gmail.com>, 2012. # Harim Park <fofwisdom@gmail.com>, 2013. # <limonade83@gmail.com>, 2012. +# Park Shinjo <kde@peremen.name>, 2013. # Shinjo Park <kde@peremen.name>, 2012. 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 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" @@ -22,217 +23,198 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "업로드" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "%s í•ëª©ì„ ì´ë™ì‹œí‚¤ì§€ ëª»í•˜ì˜€ìŒ - íŒŒì¼ ì´ë¦„ì´ ì´ë¯¸ 존재함" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "%s í•ëª©ì„ ì´ë”©ì‹œí‚¤ì§€ 못하였ìŒ" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "íŒŒì¼ ì´ë¦„바꾸기 í• ìˆ˜ ì—†ìŒ" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "파ì¼ì´ 업로드ë˜ì§€ 않았습니다. 알 수 없는 오류입니다" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "ì—…ë¡œë“œì— ì„±ê³µí•˜ì˜€ìŠµë‹ˆë‹¤." -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "업로드한 파ì¼ì´ php.iniì˜ upload_max_filesize보다 í½ë‹ˆë‹¤:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "업로드한 파ì¼ì´ HTML ë¬¸ì„œì— ì§€ì •í•œ MAX_FILE_SIZE보다 ë” í¼" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "파ì¼ì´ 부분ì 으로 업로드ë¨" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "ì—…ë¡œë“œëœ íŒŒì¼ ì—†ìŒ" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "임시 í´ë”ê°€ 사ë¼ì§" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "디스í¬ì— ì“°ì§€ 못했습니다" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" -msgstr "ì—¬ìœ ê³µê°„ì´ ë¶€ì¡±í•©ë‹ˆë‹¤" +msgstr "ì—¬ìœ ê³µê°„ì´ ë¶€ì¡±í•©ë‹ˆë‹¤" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." -msgstr "올바르지 ì•Šì€ ë””ë ‰í† ë¦¬ìž…ë‹ˆë‹¤." +msgstr "올바르지 ì•Šì€ ë””ë ‰í„°ë¦¬ìž…ë‹ˆë‹¤." #: appinfo/app.php:10 msgid "Files" msgstr "파ì¼" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "ê³µìœ í•´ì œ" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "ì‚ì œ" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "ì´ë¦„ 바꾸기" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name}ì´(ê°€) ì´ë¯¸ 존재함" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "바꾸기" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "ì´ë¦„ ì œì•ˆ" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "취소" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "{new_name}ì„(를) 대체함" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "실행 취소" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "{old_name}ì´(ê°€) {new_name}(으)로 대체ë¨" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "{files} ê³µìœ í•´ì œë¨" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "{files} ì‚ì œë¨" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' 는 올바르지 ì•Šì€ íŒŒì¼ ì´ë¦„ 입니다." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." -msgstr "파ì¼ì´ë¦„ì€ ê³µëž€ì´ ë 수 없습니다." +msgstr "íŒŒì¼ ì´ë¦„ì´ ë¹„ì–´ ìžˆì„ ìˆ˜ 없습니다." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "í´ë” ì´ë¦„ì´ ì˜¬ë°”ë¥´ì§€ 않습니다. ì´ë¦„ì— ë¬¸ìž '\\', '/', '<', '>', ':', '\"', '|', '? ', '*'는 ì‚¬ìš©í• ìˆ˜ 없습니다." -#: js/files.js:204 +#: 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 "ì €ìž¥ ê³µê°„ì´ ê±°ì˜ ê°€ë“ ì°¼ìŠµë‹ˆë‹¤ ({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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "ì´ íŒŒì¼ì€ ë””ë ‰í„°ë¦¬ì´ê±°ë‚˜ 비어 있기 ë•Œë¬¸ì— ì—…ë¡œë“œí• ìˆ˜ 없습니다" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "업로드 오류" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "닫기" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "보류 중" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "íŒŒì¼ 1ê°œ 업로드 중" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "íŒŒì¼ {count}ê°œ 업로드 중" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "업로드가 취소ë˜ì—ˆìŠµë‹ˆë‹¤." -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "íŒŒì¼ ì—…ë¡œë“œê°€ ì§„í–‰ 중입니다. ì´ íŽ˜ì´ì§€ë¥¼ 벗어나면 업로드가 취소ë©ë‹ˆë‹¤." -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URLì„ ìž…ë ¥í•´ì•¼ 합니다." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "í´ë” ì´ë¦„ì´ ìœ íš¨í•˜ì§€ 않습니다. " -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "íŒŒì¼ {count}ê°œ 검색ë¨" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "검색 중 오류 ë°œìƒ" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "ì´ë¦„" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "í¬ê¸°" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "ìˆ˜ì •ë¨" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "í´ë” 1ê°œ" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "í´ë” {count}ê°œ" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "íŒŒì¼ 1ê°œ" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "íŒŒì¼ {count}ê°œ" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "업로드" + #: templates/admin.php:5 msgid "File handling" msgstr "íŒŒì¼ ì²˜ë¦¬" @@ -281,32 +263,40 @@ msgstr "í´ë”" msgid "From link" msgstr "ë§í¬ì—서" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "업로드 취소" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤. ì—…ë¡œë“œí• ìˆ˜ 있습니다!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "다운로드" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "업로드 용량 초과" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "파ì¼ì„ ê²€ìƒ‰í•˜ê³ ìžˆìŠµë‹ˆë‹¤. ê¸°ë‹¤ë ¤ 주ì‹ì‹œì˜¤." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "현재 검색" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "íŒŒì¼ ì‹œìŠ¤í…œ ìºì‹œ ì—…ê·¸ë ˆì´ë“œ 중..." diff --git a/l10n/ko/files_encryption.po b/l10n/ko/files_encryption.po index 441ba8cec4b..2988d1f0cf5 100644 --- a/l10n/ko/files_encryption.po +++ b/l10n/ko/files_encryption.po @@ -4,14 +4,14 @@ # # Translators: # 남ìžì‚¬ëžŒ <cessnagi@gmail.com>, 2012. -# Shinjo Park <kde@peremen.name>, 2012. +# Shinjo Park <kde@peremen.name>, 2012-2013. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 08:20+0000\n" +"Last-Translator: Shinjo Park <kde@peremen.name>\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" @@ -23,53 +23,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +msgstr "ownCloud로 ì „í™˜í•œ ë‹¤ìŒ ì•”í˜¸í™”ì— ì‚¬ìš©í• ì•”í˜¸ë¥¼ 변경하면 ë³€í™˜ì´ ì™„ë£Œë©ë‹ˆë‹¤." #: js/settings-personal.js:17 msgid "switched to client side encryption" -msgstr "" +msgstr "í´ë¼ì´ì–¸íЏ 암호화로 변경ë¨" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +msgstr "암호화 암호를 ë¡œê·¸ì¸ ì•”í˜¸ë¡œ 변경" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +msgstr "암호를 확ì¸í•œ ë‹¤ìŒ ë‹¤ì‹œ 시ë„하ì‹ì‹œì˜¤." #: js/settings-personal.js:25 msgid "Could not change your file encryption password to your login password" -msgstr "" +msgstr "암호화 암호를 ë¡œê·¸ì¸ ì•”í˜¸ë¡œ ë³€ê²½í• ìˆ˜ 없습니다" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "암호화 모드 ì„ íƒ:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "í´ë¼ì´ì–¸íЏ 암호화 (ì•ˆì „í•˜ì§€ë§Œ 웹ì—서 ë°ì´í„°ì— ì ‘ê·¼í• ìˆ˜ ì—†ìŒ)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "서버 암호화 (웹 ë° ë°ìФí¬í†± í´ë¼ì´ì–¸íЏì—서 ë°ì´í„°ì— ì ‘ê·¼í• ìˆ˜ 있ìŒ)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "ì—†ìŒ (암호화하지 않ìŒ)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "알림: 암호화 모드를 ì„ íƒí•˜ë©´ 다른 것으로 ë³€ê²½í• ìˆ˜ 없습니다" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "ì‚¬ìš©ìž ì§€ì • (사용ìžë³„ ì„¤ì •)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/ko/files_external.po b/l10n/ko/files_external.po index f43b8963773..0c7bf2da326 100644 --- a/l10n/ko/files_external.po +++ b/l10n/ko/files_external.po @@ -5,14 +5,15 @@ # Translators: # <aoiob4305@gmail.com>, 2013. # 남ìžì‚¬ëžŒ <cessnagi@gmail.com>, 2012. +# Park Shinjo <peremen@gmail.com>, 2013. # Shinjo Park <kde@peremen.name>, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-08 00:30+0100\n" -"PO-Revision-Date: 2013-01-07 10:07+0000\n" -"Last-Translator: aoiob4305 <aoiob4305@gmail.com>\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 <kde@peremen.name>\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" @@ -28,11 +29,11 @@ msgstr "ì ‘ê·¼ 허가ë¨" msgid "Error configuring Dropbox storage" msgstr "Dropbox ì €ìž¥ì†Œ ì„¤ì • 오류" -#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 +#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:41 msgid "Grant access" msgstr "ì ‘ê·¼ 권한 부여" -#: js/dropbox.js:73 js/google.js:72 +#: js/dropbox.js:73 js/google.js:73 msgid "Fill out all required fields" msgstr "ëª¨ë“ í•„ìˆ˜ í•ëª©ì„ ìž…ë ¥í•˜ì‹ì‹œì˜¤" @@ -40,22 +41,22 @@ msgstr "ëª¨ë“ í•„ìˆ˜ í•ëª©ì„ ìž…ë ¥í•˜ì‹ì‹œì˜¤" msgid "Please provide a valid Dropbox app key and secret." msgstr "올바른 Dropbox 앱 키와 암호를 ìž…ë ¥í•˜ì‹ì‹œì˜¤." -#: js/google.js:26 js/google.js:73 js/google.js:78 +#: js/google.js:26 js/google.js:74 js/google.js:79 msgid "Error configuring Google Drive storage" msgstr "Google 드ë¼ì´ë¸Œ ì €ìž¥ì†Œ ì„¤ì • 오류" -#: lib/config.php:434 +#: lib/config.php:405 msgid "" "<b>Warning:</b> \"smbclient\" is not installed. Mounting of CIFS/SMB shares " "is not possible. Please ask your system administrator to install it." -msgstr "<b>ê²½ê³ </b>\"smbclient\"ê°€ 설치ë˜ì§€ 않았습니다. CIFS/SMB ê³µìœ ì• ì—°ê²°ì´ ë¶ˆê°€ëŠ¥ 합니다.. 시스템 관리ìžì—게 ìš”ì²í•˜ì—¬ 설치하시기 ë°”ëžë‹ˆë‹¤." +msgstr "<b>ê²½ê³ :</b> \"smbclient\"ê°€ 설치ë˜ì§€ 않았습니다. CIFS/SMB ê³µìœ ìžì›ì— ì—°ê²°í• ìˆ˜ 없습니다. 시스템 관리ìžì—게 설치를 ìš”ì²í•˜ì‹ì‹œì˜¤." -#: lib/config.php:435 +#: lib/config.php:406 msgid "" "<b>Warning:</b> 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 "<b>ê²½ê³ </b>PHPìš© FTP ì§€ì›ì´ 사용 불가능 하거나 설치ë˜ì§€ 않았습니다. FTP ê³µìœ ì— ì—°ê²°ì´ ë¶ˆê°€ëŠ¥ 합니다. 시스템 관리ìžì—게 ìš”ì²í•˜ì—¬ 설치하시기 ë°”ëžë‹ˆë‹¤. " +msgstr "<b>ê²½ê³ :</b> PHP FTP ì§€ì›ì´ 비활성화ë˜ì–´ 있거나 설치ë˜ì§€ 않았습니다. FTP ê³µìœ ë¥¼ ë§ˆìš´íŠ¸í• ìˆ˜ 없습니다. 시스템 관리ìžì—게 설치를 ìš”ì²í•˜ì‹ì‹œì˜¤." #: templates/settings.php:3 msgid "External Storage" diff --git a/l10n/ko/files_trashbin.po b/l10n/ko/files_trashbin.po new file mode 100644 index 00000000000..db8be55cbb1 --- /dev/null +++ b/l10n/ko/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/ko/lib.po b/l10n/ko/lib.po index c759d43ece3..ffbaa11a4ec 100644 --- a/l10n/ko/lib.po +++ b/l10n/ko/lib.po @@ -4,14 +4,15 @@ # # Translators: # 남ìžì‚¬ëžŒ <cessnagi@gmail.com>, 2012. +# Park Shinjo <kde@peremen.name>, 2013. # Shinjo Park <kde@peremen.name>, 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" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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 <kde@peremen.name>\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" @@ -43,25 +44,25 @@ msgstr "앱" 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" diff --git a/l10n/ko/settings.po b/l10n/ko/settings.po index cf07cd95284..3ae712d4835 100644 --- a/l10n/ko/settings.po +++ b/l10n/ko/settings.po @@ -7,14 +7,14 @@ # 남ìžì‚¬ëžŒ <cessnagi@gmail.com>, 2012. # Harim Park <fofwisdom@gmail.com>, 2013. # <limonade83@gmail.com>, 2012. -# Shinjo Park <kde@peremen.name>, 2012. +# Shinjo Park <kde@peremen.name>, 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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 <kde@peremen.name>\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" @@ -92,7 +92,7 @@ msgstr "활성화" msgid "Saving..." msgstr "ì €ìž¥ 중..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "한êµì–´" @@ -104,21 +104,21 @@ msgstr "앱 추가" msgid "More Apps" msgstr "ë” ë§Žì€ ì•±" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "앱 ì„ íƒ" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "apps.owncloud.comì— ìžˆëŠ” 앱 페ì´ì§€ë¥¼ ì°¸ê³ í•˜ì‹ì‹œì˜¤" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" -msgstr "<span class=\"licence\"></span>-ë¼ì´ì„ 스 ë³´ìœ ìž <span class=\"author\"></span>" +msgstr "<span class=\"licence\"></span>-ë¼ì´ì„ 스ë¨: <span class=\"author\"></span>" #: templates/help.php:3 msgid "User Documentation" -msgstr "ìœ ì € 문서" +msgstr "ì‚¬ìš©ìž ë¬¸ì„œ" #: templates/help.php:4 msgid "Administrator Documentation" @@ -134,7 +134,7 @@ msgstr "í¬ëŸ¼" #: templates/help.php:9 msgid "Bugtracker" -msgstr "버그트래커" +msgstr "버그 트래커" #: templates/help.php:11 msgid "Commercial Support" @@ -147,11 +147,11 @@ msgstr "현재 공간 <strong>%s</strong>/<strong>%s</strong>ì„(를) 사용 중 #: templates/personal.php:12 msgid "Clients" -msgstr "ê³ ê°" +msgstr "í´ë¼ì´ì–¸íЏ" #: templates/personal.php:13 msgid "Download Desktop Clients" -msgstr "ë°ìФí¬íƒ‘ í´ë¼ì´ì–¸íЏ 다운로드" +msgstr "ë°ìФí¬í†± í´ë¼ì´ì–¸íЏ 다운로드" #: templates/personal.php:14 msgid "Download Android Client" @@ -161,7 +161,7 @@ msgstr "안드로ì´ë“œ í´ë¼ì´ì–¸íЏ 다운로드" msgid "Download iOS Client" msgstr "iOS í´ë¼ì´ì–¸íЏ 다운로드" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "암호" @@ -215,11 +215,11 @@ msgstr "WebDAV" #: templates/personal.php:54 msgid "Use this address to connect to your ownCloud in your file manager" -msgstr "íŒŒì¼ ë§¤ë‹ˆì €ì—서 사용ìžì˜ ownCloudì— ì ‘ì†í•˜ê¸° 위해 ì´ ì£¼ì†Œë¥¼ 사용하ì‹ì‹œìš”." +msgstr "íŒŒì¼ ê´€ë¦¬ìžì—서 ownCloudì— ì ‘ì†í•˜ë ¤ë©´ ì´ ì£¼ì†Œë¥¼ 사용하ì‹ì‹œì˜¤." #: templates/personal.php:63 msgid "Version" -msgstr "ë²„ì ¼" +msgstr "ë²„ì „" #: templates/personal.php:65 msgid "" @@ -231,11 +231,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "<a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud 커뮤니티</a>ì— ì˜í•´ì„œ 개발ë˜ì—ˆìŠµë‹ˆë‹¤. <a href=\"https://github.com/owncloud\" target=\"_blank\">ì›ë³¸ 코드</a>는 <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>ì— ë”°ë¼ ì‚¬ìš©ì´ í—ˆê°€ë©ë‹ˆë‹¤." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "ì´ë¦„" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "ë¡œê·¸ì¸ ì´ë¦„" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "그룹" @@ -247,26 +247,38 @@ msgstr "만들기" msgid "Default Storage" msgstr "기본 ì €ìž¥ì†Œ" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "ë¬´ì œí•œ" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "기타" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "표시 ì´ë¦„" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "그룹 관리ìž" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "ì €ìž¥ì†Œ" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "ì‚ì œ" diff --git a/l10n/ko/user_ldap.po b/l10n/ko/user_ldap.po index 53b9f3b081f..4afced481ee 100644 --- a/l10n/ko/user_ldap.po +++ b/l10n/ko/user_ldap.po @@ -5,14 +5,14 @@ # Translators: # <aoiob4305@gmail.com>, 2013. # 남ìžì‚¬ëžŒ <cessnagi@gmail.com>, 2012. -# Shinjo Park <kde@peremen.name>, 2012. +# Shinjo Park <kde@peremen.name>, 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-16 00:19+0100\n" -"PO-Revision-Date: 2013-01-15 23:20+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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 <kde@peremen.name>\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" @@ -25,13 +25,13 @@ msgid "" "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may" " experience unexpected behaviour. Please ask your system administrator to " "disable one of them." -msgstr "<b>ê²½ê³ </b>user_ldap 앱과 user_webdavauth ì•±ì€ í˜¸í™˜ë˜ì§€ 않습니다. 오ë™ìž‘ì„ ì¼ìœ¼í‚¬ 수 있으므로, 시스템 관리ìžì—게 ìš”ì²í•˜ì—¬, 둘 중 하나를 비활성화 하시기 ë°”ëžë‹ˆë‹¤." +msgstr "<b>ê²½ê³ :</b> user_ldap 앱과 user_webdavauth ì•±ì€ í˜¸í™˜ë˜ì§€ 않습니다. 오ë™ìž‘ì„ ì¼ìœ¼í‚¬ 수 있으므로, 시스템 관리ìžì—게 ìš”ì²í•˜ì—¬ 둘 중 하나만 사용하ë„ë¡ í•˜ì‹ì‹œì˜¤." #: templates/settings.php:11 msgid "" "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not " "work. Please ask your system administrator to install it." -msgstr "" +msgstr "<b>ê²½ê³ :</b> PHP LDAP ëª¨ë“ˆì´ ë¹„í™œì„±í™”ë˜ì–´ 있거나 설치ë˜ì–´ 있지 않습니다. 백엔드를 ì‚¬ìš©í• ìˆ˜ 없습니다. 시스템 관리ìžì—게 설치를 ìš”ì²í•˜ì‹ì‹œì˜¤." #: templates/settings.php:15 msgid "Host" @@ -48,7 +48,7 @@ msgstr "기본 DN" #: templates/settings.php:16 msgid "One Base DN per line" -msgstr "" +msgstr "기본 DNì„ í•œ ì¤„ì— í•˜ë‚˜ì”© ìž…ë ¥í•˜ì‹ì‹œì˜¤" #: templates/settings.php:16 msgid "You can specify Base DN for users and groups in the Advanced tab" @@ -123,7 +123,7 @@ msgstr "기본 ì‚¬ìš©ìž íŠ¸ë¦¬" #: templates/settings.php:25 msgid "One User Base DN per line" -msgstr "" +msgstr "ì‚¬ìš©ìž DNì„ í•œ ì¤„ì— í•˜ë‚˜ì”© ìž…ë ¥í•˜ì‹ì‹œì˜¤" #: templates/settings.php:26 msgid "Base Group Tree" @@ -131,7 +131,7 @@ msgstr "기본 그룹 트리" #: templates/settings.php:26 msgid "One Group Base DN per line" -msgstr "" +msgstr "그룹 기본 DNì„ í•œ ì¤„ì— í•˜ë‚˜ì”© ìž…ë ¥í•˜ì‹ì‹œì˜¤" #: templates/settings.php:27 msgid "Group-Member association" diff --git a/l10n/ko/user_webdavauth.po b/l10n/ko/user_webdavauth.po index bd135598c7f..f10bd76454e 100644 --- a/l10n/ko/user_webdavauth.po +++ b/l10n/ko/user_webdavauth.po @@ -5,13 +5,14 @@ # Translators: # <aoiob4305@gmail.com>, 2013. # 남ìžì‚¬ëžŒ <cessnagi@gmail.com>, 2012. +# Park Shinjo <kde@peremen.name>, 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 <owncloud-bot@tmit.eu>\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 <kde@peremen.name>\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" @@ -21,7 +22,7 @@ msgstr "" #: templates/settings.php:3 msgid "WebDAV Authentication" -msgstr "" +msgstr "WebDAV ì¸ì¦" #: templates/settings.php:4 msgid "URL: http://" @@ -32,4 +33,4 @@ 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ì—서 ì´ URL로 ì‚¬ìš©ìž ì¸ì¦ ì •ë³´ë¥¼ 보냅니다. ì´ í”ŒëŸ¬ê·¸ì¸ì€ ì‘ë‹µì„ í™•ì¸í•˜ì—¬ HTTP ìƒíƒœ 코드 401ì´ë‚˜ 403ì´ ëŒì•„온 ê²½ìš°ì— ìž˜ëª»ëœ ì¸ì¦ ì •ë³´ë¡œ 간주합니다. 다른 ëª¨ë“ ìƒíƒœ 코드는 올바른 ì¸ì¦ ì •ë³´ë¡œ 간주합니다." diff --git a/l10n/ku_IQ/core.po b/l10n/ku_IQ/core.po index 66155fca436..b06563d7538 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-30 00:23+0100\n" +"PO-Revision-Date: 2013-01-29 23:23+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -18,24 +18,24 @@ msgstr "" "Language: ku_IQ\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -80,59 +80,135 @@ msgstr "" msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "ده‌ستكاری" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "" @@ -162,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "هه‌ڵه" @@ -175,122 +251,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "وشەی تێپەربو" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "" @@ -442,87 +537,11 @@ msgstr "هۆستی داتابه‌یس" msgid "Finish setup" msgstr "كۆتایی هات ده‌ستكاریه‌كان" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "ڕاژه‌ی وێب له‌ژێر چاودێریت دایه" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "چوونەدەرەوە" diff --git a/l10n/ku_IQ/files.po b/l10n/ku_IQ/files.po index abd2fbccd88..6827e786ca6 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -17,65 +17,46 @@ msgstr "" "Language: ku_IQ\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "بارکردن" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -83,151 +64,151 @@ msgstr "" msgid "Files" msgstr "" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "داخستن" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "ناونیشانی به‌سته‌ر نابێت به‌تاڵ بێت." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "ناو" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "بارکردن" + #: templates/admin.php:5 msgid "File handling" msgstr "" @@ -276,32 +257,40 @@ msgstr "بوخچه" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "داگرتن" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/ku_IQ/files_trashbin.po b/l10n/ku_IQ/files_trashbin.po new file mode 100644 index 00000000000..9d51dca2cd6 --- /dev/null +++ b/l10n/ku_IQ/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ku_IQ\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/ku_IQ/settings.po b/l10n/ku_IQ/settings.po index 75dbd11b7bc..45bfc958c4c 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -87,7 +87,7 @@ msgstr "چالاککردن" msgid "Saving..." msgstr "پاشکه‌وتده‌کات..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "" @@ -99,15 +99,15 @@ msgstr "" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -156,7 +156,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "وشەی تێپەربو" @@ -226,11 +226,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "ناو" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "" @@ -242,26 +242,38 @@ msgstr "" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "" diff --git a/l10n/lb/core.po b/l10n/lb/core.po index d51bf81245a..18bf6381db1 100644 --- a/l10n/lb/core.po +++ b/l10n/lb/core.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <sim0n@trypill.org>, 2013. # <sim0n@trypill.org>, 2011-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" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -18,24 +19,24 @@ msgstr "" "Language: lb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -80,65 +81,141 @@ msgstr "Keng Kategorien ausgewielt fir ze läschen." msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Sonndes" + +#: js/config.php:32 +msgid "Monday" +msgstr "Méindes" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Dënschdes" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Mëttwoch" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Donneschdes" + +#: js/config.php:32 +msgid "Friday" +msgstr "Freides" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Samschdes" + +#: js/config.php:33 +msgid "January" +msgstr "Januar" + +#: js/config.php:33 +msgid "February" +msgstr "Februar" + +#: js/config.php:33 +msgid "March" +msgstr "Mäerz" + +#: js/config.php:33 +msgid "April" +msgstr "Abrëll" + +#: js/config.php:33 +msgid "May" +msgstr "Mee" + +#: js/config.php:33 +msgid "June" +msgstr "Juni" + +#: js/config.php:33 +msgid "July" +msgstr "Juli" + +#: js/config.php:33 +msgid "August" +msgstr "August" + +#: js/config.php:33 +msgid "September" +msgstr "September" + +#: js/config.php:33 +msgid "October" +msgstr "Oktober" + +#: js/config.php:33 +msgid "November" +msgstr "November" + +#: js/config.php:33 +msgid "December" +msgstr "Dezember" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Astellungen" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" -msgstr "" +msgstr "vrun 1 Stonn" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" -msgstr "" +msgstr "vru {hours} Stonnen" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" -msgstr "" +msgstr "Läschte Mount" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" -msgstr "" +msgstr "vru {months} Méint" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" -msgstr "" +msgstr "Méint hier" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" -msgstr "" +msgstr "Läscht Joer" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" -msgstr "" +msgstr "Joren hier" #: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "Auswielen" #: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" @@ -162,8 +239,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Fehler" @@ -175,122 +252,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Deelen" + +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Passwuert" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" -msgstr "" +msgstr "Net méi deelen" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "erstellen" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" -msgstr "" +msgstr "läschen" -#: js/share.js:322 +#: js/share.js:339 msgid "share" -msgstr "" +msgstr "deelen" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ownCloud Passwuert reset" @@ -403,7 +499,7 @@ msgstr "En <strong>Admin Account</strong> uleeën" #: templates/installation.php:50 msgid "Advanced" -msgstr "Advanced" +msgstr "Avancéiert" #: templates/installation.php:52 msgid "Data folder" @@ -442,87 +538,11 @@ msgstr "Datebank Server" msgid "Finish setup" msgstr "Installatioun ofschléissen" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Sonndes" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Méindes" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Dënschdes" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Mëttwoch" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Donneschdes" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Freides" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Samschdes" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Januar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Februar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Mäerz" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Abrëll" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Mee" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Juni" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Juli" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "August" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "September" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Oktober" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "November" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Dezember" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "Web Servicer ënnert denger Kontroll" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Ausloggen" diff --git a/l10n/lb/files.po b/l10n/lb/files.po index 61b45edafd4..6c93eac950d 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -18,65 +18,46 @@ msgstr "" "Language: lb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Eroplueden" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Keen Feeler, Datei ass komplett ropgelueden ginn" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Déi ropgelueden Datei ass méi grouss wei d'MAX_FILE_SIZE Eegenschaft déi an der HTML form uginn ass" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Déi ropgelueden Datei ass nëmmen hallef ropgelueden ginn" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Et ass keng Datei ropgelueden ginn" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Et feelt en temporären Dossier" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Konnt net op den Disk schreiwen" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -84,151 +65,151 @@ msgstr "" msgid "Files" msgstr "Dateien" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" -msgstr "" +msgstr "Net méi deelen" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Läschen" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "ersetzen" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "ofbriechen" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "réckgängeg man" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Kann deng Datei net eroplueden well et en Dossier ass oder 0 byte grouss ass." -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Fehler beim eroplueden" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Zoumaachen" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Upload ofgebrach." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Numm" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Gréisst" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Geännert" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Eroplueden" + #: templates/admin.php:5 msgid "File handling" msgstr "Fichier handling" @@ -277,32 +258,40 @@ msgstr "Dossier" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Upload ofbriechen" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Hei ass näischt. Lued eppes rop!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Eroflueden" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Upload ze grouss" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "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." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Fichieren gi gescannt, war weg." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Momentane Scan" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/lb/files_sharing.po b/l10n/lb/files_sharing.po index ebdb3f59320..f4d8ed5cc8e 100644 --- a/l10n/lb/files_sharing.po +++ b/l10n/lb/files_sharing.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot <thomas.mueller@tmit.eu>\n" +"POT-Creation-Date: 2013-01-27 00:04+0100\n" +"PO-Revision-Date: 2013-01-26 13:36+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -19,27 +19,27 @@ msgstr "" #: templates/authenticate.php:4 msgid "Password" -msgstr "" +msgstr "Passwuert" #: templates/authenticate.php:6 msgid "Submit" msgstr "" -#: templates/public.php:9 +#: templates/public.php:11 #, php-format msgid "%s shared the folder %s with you" msgstr "" -#: templates/public.php:11 +#: templates/public.php:13 #, php-format msgid "%s shared the file %s with you" msgstr "" -#: templates/public.php:14 templates/public.php:30 +#: templates/public.php:16 templates/public.php:32 msgid "Download" msgstr "" -#: templates/public.php:29 +#: templates/public.php:31 msgid "No preview available for" msgstr "" diff --git a/l10n/lb/files_trashbin.po b/l10n/lb/files_trashbin.po new file mode 100644 index 00000000000..b3405a18ed4 --- /dev/null +++ b/l10n/lb/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: lb\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/lb/files_versions.po b/l10n/lb/files_versions.po index 3c50ece48e4..3eeeda4f063 100644 --- a/l10n/lb/files_versions.po +++ b/l10n/lb/files_versions.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <sim0n@trypill.org>, 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-27 00:04+0100\n" +"PO-Revision-Date: 2013-01-26 12:27+0000\n" +"Last-Translator: sim0n <sim0n@trypill.org>\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" @@ -19,12 +20,12 @@ msgstr "" #: js/versions.js:16 msgid "History" -msgstr "" +msgstr "Historique" #: templates/settings.php:3 msgid "Files Versioning" -msgstr "" +msgstr "Fichier's Versionéierung " #: templates/settings.php:4 msgid "Enable" -msgstr "" +msgstr "Aschalten" diff --git a/l10n/lb/lib.po b/l10n/lb/lib.po index 09aea026773..b7995af6442 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-18 00:03+0100\n" -"PO-Revision-Date: 2013-01-17 21:57+0000\n" +"POT-Creation-Date: 2013-01-27 00:04+0100\n" +"PO-Revision-Date: 2013-01-26 13:36+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -57,7 +57,7 @@ msgstr "" msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:228 +#: helper.php:229 msgid "couldn't be determined" msgstr "" @@ -100,7 +100,7 @@ msgstr "" #: template.php:116 msgid "1 hour ago" -msgstr "" +msgstr "vrun 1 Stonn" #: template.php:117 #, php-format @@ -122,7 +122,7 @@ msgstr "" #: template.php:121 msgid "last month" -msgstr "" +msgstr "Läschte Mount" #: template.php:122 #, php-format @@ -131,11 +131,11 @@ msgstr "" #: template.php:123 msgid "last year" -msgstr "" +msgstr "Läscht Joer" #: template.php:124 msgid "years ago" -msgstr "" +msgstr "Joren hier" #: updater.php:75 #, php-format diff --git a/l10n/lb/settings.po b/l10n/lb/settings.po index 2bb5692c231..0dbc3f3e7fe 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -88,7 +88,7 @@ msgstr "Aschalten" msgid "Saving..." msgstr "Speicheren..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__language_name__" @@ -100,15 +100,15 @@ msgstr "Setz deng App bei" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Wiel eng Applikatioun aus" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Kuck dir d'Applicatioun's Säit op apps.owncloud.com un" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -157,7 +157,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Passwuert" @@ -227,11 +227,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Numm" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Gruppen" @@ -243,26 +243,38 @@ msgstr "Erstellen" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Aner" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Gruppen Admin" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Läschen" diff --git a/l10n/lb/user_ldap.po b/l10n/lb/user_ldap.po index a12e3f905ee..b48c76aa9b2 100644 --- a/l10n/lb/user_ldap.po +++ b/l10n/lb/user_ldap.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-01-27 00:04+0100\n" +"PO-Revision-Date: 2013-01-26 13:36+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -64,7 +64,7 @@ msgstr "" #: templates/settings.php:18 msgid "Password" -msgstr "" +msgstr "Passwuert" #: templates/settings.php:18 msgid "For anonymous access, leave DN and Password empty." diff --git a/l10n/lt_LT/core.po b/l10n/lt_LT/core.po index bdc20a2384a..8b6ad9ccc69 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -19,24 +19,24 @@ 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/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -81,59 +81,135 @@ msgstr "Trynimui nepasirinkta jokia kategorija." msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Sekmadienis" + +#: js/config.php:32 +msgid "Monday" +msgstr "Pirmadienis" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Antradienis" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "TreÄiadienis" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Ketvirtadienis" + +#: js/config.php:32 +msgid "Friday" +msgstr "Penktadienis" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Å eÅ¡tadienis" + +#: js/config.php:33 +msgid "January" +msgstr "Sausis" + +#: js/config.php:33 +msgid "February" +msgstr "Vasaris" + +#: js/config.php:33 +msgid "March" +msgstr "Kovas" + +#: js/config.php:33 +msgid "April" +msgstr "Balandis" + +#: js/config.php:33 +msgid "May" +msgstr "Gegužė" + +#: js/config.php:33 +msgid "June" +msgstr "Birželis" + +#: js/config.php:33 +msgid "July" +msgstr "Liepa" + +#: js/config.php:33 +msgid "August" +msgstr "RugpjÅ«tis" + +#: js/config.php:33 +msgid "September" +msgstr "RugsÄ—jis" + +#: js/config.php:33 +msgid "October" +msgstr "Spalis" + +#: js/config.php:33 +msgid "November" +msgstr "Lapkritis" + +#: js/config.php:33 +msgid "December" +msgstr "Gruodis" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Nustatymai" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "prieÅ¡ sekundÄ™" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "PrieÅ¡ 1 minutÄ™" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "PrieÅ¡ {count} minutes" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "Å¡iandien" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "vakar" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "PrieÅ¡ {days} dienas" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "praeitÄ… mÄ—nesį" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "prieÅ¡ mÄ—nesį" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "praeitais metais" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "prieÅ¡ metus" @@ -163,8 +239,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Klaida" @@ -176,122 +252,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Dalintis" + +#: 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 "Klaida, dalijimosi metu" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Klaida, kai atÅ¡aukiamas dalijimasis" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Klaida, keiÄiant privilegijas" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Pasidalino su Jumis ir {group} grupe {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Pasidalino su Jumis {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Dalintis su" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Dalintis nuoroda" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Apsaugotas slaptažodžiu" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Slaptažodis" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Nustatykite galiojimo laikÄ…" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Galiojimo laikas" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Dalintis per el. paÅ¡tÄ…:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Žmonių nerasta" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Dalijinasis iÅ¡naujo negalimas" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Pasidalino {item} su {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Nesidalinti" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "gali redaguoti" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "priÄ—jimo kontrolÄ—" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "sukurti" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "atnaujinti" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "iÅ¡trinti" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "dalintis" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Apsaugota slaptažodžiu" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Klaida nuimant galiojimo laikÄ…" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Klaida nustatant galiojimo laikÄ…" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ownCloud slaptažodžio atkÅ«rimas" @@ -443,87 +538,11 @@ msgstr "Duomenų bazÄ—s serveris" msgid "Finish setup" msgstr "Baigti diegimÄ…" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Sekmadienis" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Pirmadienis" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Antradienis" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "TreÄiadienis" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Ketvirtadienis" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Penktadienis" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Å eÅ¡tadienis" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Sausis" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Vasaris" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Kovas" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Balandis" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Gegužė" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Birželis" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Liepa" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "RugpjÅ«tis" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "RugsÄ—jis" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Spalis" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Lapkritis" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Gruodis" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "jÅ«sų valdomos web paslaugos" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Atsijungti" diff --git a/l10n/lt_LT/files.po b/l10n/lt_LT/files.po index bae5e238b17..973ce845150 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -20,65 +20,46 @@ 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:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Ä®kelti" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Klaidų nÄ—ra, failas įkeltas sÄ—kmingai" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Ä®keliamo failo dydis virÅ¡ija MAX_FILE_SIZE parametrÄ…, kuris yra nustatytas HTML formoje" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Failas buvo įkeltas tik dalinai" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Nebuvo įkeltas nÄ— vienas failas" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "NÄ—ra laikinojo katalogo" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Nepavyko įraÅ¡yti į diskÄ…" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -86,151 +67,151 @@ msgstr "" msgid "Files" msgstr "Failai" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Nebesidalinti" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "IÅ¡trinti" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Pervadinti" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} jau egzistuoja" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "pakeisti" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "pasiÅ«lyti pavadinimÄ…" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "atÅ¡aukti" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "pakeiskite {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "anuliuoti" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "pakeiskite {new_name} į {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "nebesidalinti {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "iÅ¡trinti {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Neįmanoma įkelti failo - jo dydis gali bÅ«ti 0 bitų arba tai katalogas" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Ä®kÄ—limo klaida" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Užverti" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Laukiantis" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "įkeliamas 1 failas" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} įkeliami failai" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Ä®kÄ—limas atÅ¡auktas." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} praskanuoti failai" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "klaida skanuojant" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Pavadinimas" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Dydis" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Pakeista" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 aplankalas" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} aplankalai" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 failas" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} failai" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Ä®kelti" + #: templates/admin.php:5 msgid "File handling" msgstr "Failų tvarkymas" @@ -279,32 +260,40 @@ msgstr "Katalogas" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "AtÅ¡aukti siuntimÄ…" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "ÄŒia tuÅ¡Äia. Ä®kelkite kÄ… nors!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Atsisiųsti" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Ä®kÄ—limui failas per didelis" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Bandomų įkelti failų dydis virÅ¡ija maksimalų leidžiamÄ… Å¡iame serveryje" -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Skenuojami failai, praÅ¡ome palaukti." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Å iuo metu skenuojama" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/lt_LT/files_trashbin.po b/l10n/lt_LT/files_trashbin.po new file mode 100644 index 00000000000..8f201877c0f --- /dev/null +++ b/l10n/lt_LT/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"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/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/lt_LT/settings.po b/l10n/lt_LT/settings.po index 91d9a303f5e..23fe35cf9a1 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -89,7 +89,7 @@ msgstr "Ä®jungti" msgid "Saving..." msgstr "Saugoma.." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Kalba" @@ -101,15 +101,15 @@ msgstr "PridÄ—ti programÄ—lÄ™" msgid "More Apps" msgstr "Daugiau aplikacijų" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Pasirinkite programÄ…" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>- autorius<span class=\"author\"></span>" @@ -158,7 +158,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Slaptažodis" @@ -228,11 +228,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Vardas" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "GrupÄ—s" @@ -244,26 +244,38 @@ msgstr "Sukurti" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Kita" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "IÅ¡trinti" diff --git a/l10n/lv/core.po b/l10n/lv/core.po index af275975955..33e4a0ab1a0 100644 --- a/l10n/lv/core.po +++ b/l10n/lv/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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" @@ -18,24 +18,24 @@ msgstr "" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -80,59 +80,135 @@ msgstr "" msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "SvÄ“tdiena" + +#: js/config.php:32 +msgid "Monday" +msgstr "Pirmdiena" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Otrdiena" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "TreÅ¡diena" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Ceturtdiena" + +#: js/config.php:32 +msgid "Friday" +msgstr "Piektdiena" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Sestdiena" + +#: js/config.php:33 +msgid "January" +msgstr "JanvÄris" + +#: js/config.php:33 +msgid "February" +msgstr "FebruÄris" + +#: js/config.php:33 +msgid "March" +msgstr "Marts" + +#: js/config.php:33 +msgid "April" +msgstr "AprÄ«lis" + +#: js/config.php:33 +msgid "May" +msgstr "Maijs" + +#: js/config.php:33 +msgid "June" +msgstr "JÅ«nijs" + +#: js/config.php:33 +msgid "July" +msgstr "JÅ«lijs" + +#: js/config.php:33 +msgid "August" +msgstr "Augusts" + +#: js/config.php:33 +msgid "September" +msgstr "Septembris" + +#: js/config.php:33 +msgid "October" +msgstr "Oktobris" + +#: js/config.php:33 +msgid "November" +msgstr "Novembris" + +#: js/config.php:33 +msgid "December" +msgstr "Decembris" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "IestatÄ«jumi" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "" @@ -142,7 +218,7 @@ msgstr "" #: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" -msgstr "" +msgstr "Atcelt" #: js/oc-dialogs.js:162 msgid "No" @@ -162,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Kļūme" @@ -175,122 +251,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "LÄ«dzdalÄ«t" + +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Parole" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "PÄrtraukt lÄ«dzdalīšanu" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "" @@ -442,87 +537,11 @@ msgstr "DatubÄzes mÄjvieta" msgid "Finish setup" msgstr "Pabeigt uzstÄdÄ«jumus" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Izlogoties" diff --git a/l10n/lv/files.po b/l10n/lv/files.po index 0d45b08c187..e1a30aaf300 100644 --- a/l10n/lv/files.po +++ b/l10n/lv/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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" @@ -19,65 +19,46 @@ msgstr "" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "AugÅ¡uplÄdet" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Viss kÄrtÄ«bÄ, augÅ¡upielÄde veiksmÄ«ga" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Neviens fails netika augÅ¡uplÄdÄ“ts" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "TrÅ«kst pagaidu mapes" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Nav iespÄ“jams saglabÄt" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -85,151 +66,151 @@ msgstr "" msgid "Files" msgstr "Faili" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "PÄrtraukt lÄ«dzdalīšanu" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "IzdzÄ“st" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "PÄrdÄ“vÄ“t" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "aizvietot" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "Ieteiktais nosaukums" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "atcelt" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "vienu soli atpakaļ" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Nav iespÄ“jams augÅ¡uplÄdÄ“t jÅ«su failu, jo tÄds jau eksistÄ“ vai arÄ« failam nav izmÄ“ra (0 baiti)" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "AugÅ¡uplÄdēšanas laikÄ radÄs kļūda" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Gaida savu kÄrtu" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "AugÅ¡uplÄde ir atcelta" -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nosaukums" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "IzmÄ“rs" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "IzmainÄ«ts" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "AugÅ¡uplÄdet" + #: templates/admin.php:5 msgid "File handling" msgstr "Failu pÄrvaldÄ«ba" @@ -278,32 +259,40 @@ msgstr "Mape" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Atcelt augÅ¡uplÄdi" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Te vÄ“l nekas nav. RÄ«kojies, sÄc augÅ¡uplÄdÄ“t" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "LejuplÄdÄ“t" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Fails ir par lielu lai to augÅ¡uplÄdetu" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "JÅ«su augÅ¡uplÄdÄ“jamie faili pÄrsniedz servera pieļaujamo failu augÅ¡upielÄdes apjomu" -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Faili Å¡obrÄ«d tiek caurskatÄ«ti, nedaudz jÄpagaida." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Å obrÄ«d tiek pÄrbaudÄ«ti" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/lv/files_trashbin.po b/l10n/lv/files_trashbin.po new file mode 100644 index 00000000000..eaa941cf0f7 --- /dev/null +++ b/l10n/lv/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: lv\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/lv/settings.po b/l10n/lv/settings.po index 796d46f705e..addf7402061 100644 --- a/l10n/lv/settings.po +++ b/l10n/lv/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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" @@ -89,7 +89,7 @@ msgstr "Pievienot" msgid "Saving..." msgstr "SaglabÄ..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__valodas_nosaukums__" @@ -101,15 +101,15 @@ msgstr "Pievieno savu aplikÄciju" msgid "More Apps" msgstr "VairÄk aplikÄciju" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "IzvÄ“lies aplikÄciju" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Apskatie aplikÄciju lapu - apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licencÄ“ts no <span class=\"author\"></span>" @@ -144,7 +144,7 @@ msgstr "JÅ«s lietojat <strong>%s</strong> no pieejamajiem <strong>%s</strong>" #: templates/personal.php:12 msgid "Clients" -msgstr "" +msgstr "Klienti" #: templates/personal.php:13 msgid "Download Desktop Clients" @@ -158,7 +158,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Parole" @@ -228,11 +228,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "IzstrÄdÄjusi<a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud kopiena</a>,<a href=\"https://github.com/owncloud\" target=\"_blank\">pirmkodu</a>kurÅ¡ ir licencÄ“ts zem <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "VÄrds" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupas" @@ -244,26 +244,38 @@ msgstr "Izveidot" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Cits" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Grupas administrators" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "IzdzÄ“st" diff --git a/l10n/mk/core.po b/l10n/mk/core.po index 2442222918c..99fa224afd7 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -20,24 +20,24 @@ msgstr "" "Language: mk\n" "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "КориÑникот %s Ñподели датотека Ñо ВаÑ" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "КориÑникот %s Ñподели папка Ñо ВаÑ" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "КориÑникот %s ја Ñподели датотека „%s“ Ñо ВаÑ. ДоÑтапна е за преземање тука: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -82,59 +82,135 @@ msgstr "Ðе е одбрана категорија за бришење." msgid "Error removing %s from favorites." msgstr "Грешка при бришење на %s од омилени." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "ПоÑтавки" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "пред Ñекунди" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "пред 1 минута" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "пред {minutes} минути" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "пред 1 чаÑ" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "пред {hours} чаÑови" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "денеÑка" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "вчера" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "пред {days} денови" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "минатиот меÑец" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "пред {months} меÑеци" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "пред меÑеци" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "минатата година" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "пред години" @@ -164,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Грешка" @@ -177,122 +253,141 @@ msgstr "Името на апликацијата не е ÑпецифицираРmsgid "The required file {file} is not installed!" msgstr "Задолжителната датотека {file} не е инÑталирана!" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Грешка при прекин на Ñподелување" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Грешка при промена на привилегии" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Споделено Ñо Ð’Ð°Ñ Ð¸ групата {group} од {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Споделено Ñо Ð’Ð°Ñ Ð¾Ð´ {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Сподели Ñо" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Сподели Ñо врÑка" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Заштити Ñо лозинка" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Лозинка" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Прати врÑка по е-пошта на личноÑÑ‚" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Прати" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "ПоÑтави рок на траење" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Рок на траење" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Сподели по е-пошта:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Ðе Ñе најдени луѓе" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Повторно Ñподелување не е дозволено" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Споделено во {item} Ñо {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Ðе Ñподелувај" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "може да Ñе измени" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "контрола на приÑтап" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "креирај" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "ажурирај" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "избриши" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "Ñподели" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Заштитено Ñо лозинка" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Грешка при тргање на рокот на траење" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Грешка при поÑтавување на рок на траење" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Праќање..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Е-порака пратена" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "реÑетирање на лозинка за ownCloud" @@ -444,87 +539,11 @@ msgstr "Сервер Ñо база" msgid "Finish setup" msgstr "Заврши го подеÑувањето" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Ðедела" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Понеделник" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Вторник" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Среда" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Четврток" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Петок" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Сабота" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Јануари" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Февруари" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Март" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Ðприл" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Мај" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Јуни" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Јули" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "ÐвгуÑÑ‚" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Септември" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Октомври" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Ðоември" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Декември" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "веб ÑервиÑи под Ваша контрола" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Одјава" diff --git a/l10n/mk/files.po b/l10n/mk/files.po index 4bd4be8d532..ff1175a9902 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -20,65 +20,46 @@ msgstr "" "Language: mk\n" "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Подигни" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Ðиту еден фајл не Ñе вчита. Ðепозната грешка" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Ðема грешка, датотеката беше подигната уÑпешно" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Подигнатата датотека ја надминува upload_max_filesize директивата во php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Подигнатата датотеката ја надминува MAX_FILE_SIZE директивата која беше поÑтавена во HTML формата" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Датотеката беше Ñамо делумно подигната." -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Ðе беше подигната датотека" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Ðе поÑтои привремена папка" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "ÐеуÑпеав да запишам на диÑк" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -86,151 +67,151 @@ msgstr "" msgid "Files" msgstr "Датотеки" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Ðе Ñподелувај" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Избриши" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Преименувај" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} веќе поÑтои" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "замени" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "предложи име" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "откажи" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "земенета {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "врати" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "заменета {new_name} Ñо {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "без Ñподелување {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "избришани {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Ðеправилно име. , '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' не Ñе дозволени." -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Ðе може да Ñе преземе вашата датотека бидејќи фолдерот во кој Ñе наоѓа фајлот има големина од 0 бајти" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Грешка при преземање" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Затвои" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Чека" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 датотека Ñе подига" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} датотеки Ñе подигаат" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Преземањето е прекинато." -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Подигање на датотека е во тек. Ðапуштење на Ñтраницата ќе го прекине." -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "ÐдреÑата неможе да биде празна." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} датотеки Ñкенирани" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "грешка при Ñкенирање" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Име" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Големина" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Променето" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 папка" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} папки" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 датотека" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} датотеки" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Подигни" + #: templates/admin.php:5 msgid "File handling" msgstr "Ракување Ñо датотеки" @@ -279,32 +260,40 @@ msgstr "Папка" msgid "From link" msgstr "Од врÑка" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Откажи прикачување" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Тука нема ништо. Снимете нешто!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Преземи" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Датотеката е премногу голема" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Се Ñкенираат датотеки, ве молам почекајте." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Моментално Ñкенирам" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/mk/files_trashbin.po b/l10n/mk/files_trashbin.po new file mode 100644 index 00000000000..e171b9df53d --- /dev/null +++ b/l10n/mk/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mk\n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/mk/settings.po b/l10n/mk/settings.po index 4a9325a5666..72c82ec24c9 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -90,7 +90,7 @@ msgstr "Овозможи" msgid "Saving..." msgstr "Снимам..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__language_name__" @@ -102,15 +102,15 @@ msgstr "Додадете ја Вашата апликација" msgid "More Apps" msgstr "Повеќе аппликации" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Избери аппликација" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Види ја Ñтраницата Ñо апликации на apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-лиценцирано од <span class=\"author\"></span>" @@ -159,7 +159,7 @@ msgstr "Преземи клиент за Ðндроид" msgid "Download iOS Client" msgstr "Преземи iOS клиент" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Лозинка" @@ -229,11 +229,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Развој од <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud заедницата</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">изворниот код</a> е лиценциран Ñо<a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Име" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Групи" @@ -245,26 +245,38 @@ msgstr "Создај" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "ОÑтанато" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "ÐдминиÑтратор на група" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Избриши" diff --git a/l10n/ms_MY/core.po b/l10n/ms_MY/core.po index d3e6303e112..e8d31c87c23 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -20,24 +20,24 @@ msgstr "" "Language: ms_MY\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -82,59 +82,135 @@ msgstr "tiada kategori dipilih untuk penghapusan" msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Ahad" + +#: js/config.php:32 +msgid "Monday" +msgstr "Isnin" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Selasa" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Rabu" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Khamis" + +#: js/config.php:32 +msgid "Friday" +msgstr "Jumaat" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Sabtu" + +#: js/config.php:33 +msgid "January" +msgstr "Januari" + +#: js/config.php:33 +msgid "February" +msgstr "Februari" + +#: js/config.php:33 +msgid "March" +msgstr "Mac" + +#: js/config.php:33 +msgid "April" +msgstr "April" + +#: js/config.php:33 +msgid "May" +msgstr "Mei" + +#: js/config.php:33 +msgid "June" +msgstr "Jun" + +#: js/config.php:33 +msgid "July" +msgstr "Julai" + +#: js/config.php:33 +msgid "August" +msgstr "Ogos" + +#: js/config.php:33 +msgid "September" +msgstr "September" + +#: js/config.php:33 +msgid "October" +msgstr "Oktober" + +#: js/config.php:33 +msgid "November" +msgstr "November" + +#: js/config.php:33 +msgid "December" +msgstr "Disember" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Tetapan" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "" @@ -164,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Ralat" @@ -177,122 +253,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Kongsi" + +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Kata laluan" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "Set semula kata lalaun ownCloud" @@ -444,87 +539,11 @@ msgstr "Hos pangkalan data" msgid "Finish setup" msgstr "Setup selesai" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Ahad" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Isnin" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Selasa" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Rabu" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Khamis" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Jumaat" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Sabtu" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Januari" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Februari" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Mac" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "April" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Mei" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Jun" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Julai" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Ogos" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "September" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Oktober" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "November" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Disember" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "Perkhidmatan web di bawah kawalan anda" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Log keluar" diff --git a/l10n/ms_MY/files.po b/l10n/ms_MY/files.po index aa3c0c9f0c5..351ea5b3fd2 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -21,65 +21,46 @@ msgstr "" "Language: ms_MY\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Muat naik" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Tiada fail dimuatnaik. Ralat tidak diketahui." -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Tiada ralat, fail berjaya dimuat naik." -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Fail yang dimuat naik melebihi MAX_FILE_SIZE yang dinyatakan dalam form HTML " -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Sebahagian daripada fail telah dimuat naik. " -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Tiada fail yang dimuat naik" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Folder sementara hilang" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Gagal untuk disimpan" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -87,151 +68,151 @@ msgstr "" msgid "Files" msgstr "fail" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Padam" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "ganti" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "Batal" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Tidak boleh memuatnaik fail anda kerana mungkin ianya direktori atau saiz fail 0 bytes" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Muat naik ralat" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Tutup" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Dalam proses" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Muatnaik dibatalkan." -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nama " -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Saiz" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Dimodifikasi" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Muat naik" + #: templates/admin.php:5 msgid "File handling" msgstr "Pengendalian fail" @@ -280,32 +261,40 @@ msgstr "Folder" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Batal muat naik" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Tiada apa-apa di sini. Muat naik sesuatu!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Muat turun" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Muat naik terlalu besar" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Fail yang cuba dimuat naik melebihi saiz maksimum fail upload server" -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Fail sedang diimbas, harap bersabar." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Imbasan semasa" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/ms_MY/files_trashbin.po b/l10n/ms_MY/files_trashbin.po new file mode 100644 index 00000000000..bebd72e8ed4 --- /dev/null +++ b/l10n/ms_MY/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms_MY\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/ms_MY/settings.po b/l10n/ms_MY/settings.po index 72694ffcb9c..40df55766f6 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -91,7 +91,7 @@ msgstr "Aktif" msgid "Saving..." msgstr "Simpan..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "_nama_bahasa_" @@ -103,15 +103,15 @@ msgstr "Tambah apps anda" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Pilih aplikasi" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Lihat halaman applikasi di apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -160,7 +160,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Kata laluan " @@ -230,11 +230,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nama" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Kumpulan" @@ -246,26 +246,38 @@ msgstr "Buat" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Lain" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Padam" diff --git a/l10n/nb_NO/core.po b/l10n/nb_NO/core.po index 6a652e8cea5..fe3666fe40a 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -24,24 +24,24 @@ msgstr "" "Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -86,59 +86,135 @@ msgstr "Ingen kategorier merket for sletting." msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Søndag" + +#: js/config.php:32 +msgid "Monday" +msgstr "Mandag" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Tirsdag" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Onsdag" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Torsdag" + +#: js/config.php:32 +msgid "Friday" +msgstr "Fredag" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Lørdag" + +#: js/config.php:33 +msgid "January" +msgstr "Januar" + +#: js/config.php:33 +msgid "February" +msgstr "Februar" + +#: js/config.php:33 +msgid "March" +msgstr "Mars" + +#: js/config.php:33 +msgid "April" +msgstr "April" + +#: js/config.php:33 +msgid "May" +msgstr "Mai" + +#: js/config.php:33 +msgid "June" +msgstr "Juni" + +#: js/config.php:33 +msgid "July" +msgstr "Juli" + +#: js/config.php:33 +msgid "August" +msgstr "August" + +#: js/config.php:33 +msgid "September" +msgstr "September" + +#: js/config.php:33 +msgid "October" +msgstr "Oktober" + +#: js/config.php:33 +msgid "November" +msgstr "November" + +#: js/config.php:33 +msgid "December" +msgstr "Desember" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Innstillinger" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "sekunder siden" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 minutt siden" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} minutter siden" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 time siden" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} timer siden" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "i dag" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "i gÃ¥r" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} dager siden" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "forrige mÃ¥ned" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} mÃ¥neder siden" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "mÃ¥neder siden" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "forrige Ã¥r" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "Ã¥r siden" @@ -168,8 +244,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Feil" @@ -181,122 +257,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 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 msgid "Error while sharing" msgstr "Feil under deling" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Del med" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Del med link" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Passordbeskyttet" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Passord" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Send" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Set utløpsdato" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Utløpsdato" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Del pÃ¥ epost" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Ingen personer funnet" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Avslutt deling" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "kan endre" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "tilgangskontroll" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "opprett" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "oppdater" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "slett" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "del" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Passordbeskyttet" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Kan ikke sette utløpsdato" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Sender..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "E-post sendt" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "Tilbakestill ownCloud passord" @@ -448,87 +543,11 @@ msgstr "Databasevert" msgid "Finish setup" msgstr "Fullfør oppsetting" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Søndag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Mandag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Tirsdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Onsdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Torsdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Fredag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Lørdag" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Januar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Februar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Mars" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "April" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Mai" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Juni" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Juli" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "August" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "September" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Oktober" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "November" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Desember" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "nettjenester under din kontroll" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Logg ut" diff --git a/l10n/nb_NO/files.po b/l10n/nb_NO/files.po index 4ca3bc26a60..be448cfd6dd 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -26,65 +26,46 @@ msgstr "" "Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Last opp" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Ingen filer ble lastet opp. Ukjent feil." -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Det er ingen feil. Filen ble lastet opp." -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Filstørrelsen overskrider maksgrensen pÃ¥ MAX_FILE_SIZE som ble oppgitt i HTML-skjemaet" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Filopplastningen ble bare delvis gjennomført" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Ingen fil ble lastet opp" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Mangler en midlertidig mappe" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Klarte ikke Ã¥ skrive til disk" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -92,151 +73,151 @@ msgstr "" msgid "Files" msgstr "Filer" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Avslutt deling" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Slett" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Omdøp" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} finnes allerede" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "erstatt" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "foreslÃ¥ navn" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "avbryt" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "erstatt {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "angre" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "erstatt {new_name} med {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "slettet {files}" - -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Ugyldig navn, '\\', '/', '<', '>', ':', '\"', '|', '?' og '*' er ikke tillatt." -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Kan ikke laste opp filen din siden det er en mappe eller den har 0 bytes" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Opplasting feilet" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Lukk" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Ventende" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 fil lastes opp" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} filer laster opp" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Opplasting avbrutt." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL-en kan ikke være tom." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} filer lest inn" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "feil under skanning" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Navn" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Størrelse" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Endret" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 mappe" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} mapper" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 fil" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} filer" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Last opp" + #: templates/admin.php:5 msgid "File handling" msgstr "FilhÃ¥ndtering" @@ -285,32 +266,40 @@ msgstr "Mappe" msgid "From link" msgstr "Fra link" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Avbryt opplasting" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Ingenting her. Last opp noe!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Last ned" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Opplasting for stor" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Filene du prøver Ã¥ laste opp er for store for Ã¥ laste opp til denne serveren." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Skanner etter filer, vennligst vent." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "PÃ¥gÃ¥ende skanning" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/nb_NO/files_trashbin.po b/l10n/nb_NO/files_trashbin.po new file mode 100644 index 00000000000..e986b6bbf33 --- /dev/null +++ b/l10n/nb_NO/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nb_NO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/nb_NO/settings.po b/l10n/nb_NO/settings.po index 90871dc3820..6544828d8a0 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -95,7 +95,7 @@ msgstr "SlÃ¥ pÃ¥" msgid "Saving..." msgstr "Lagrer..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__language_name__" @@ -107,15 +107,15 @@ msgstr "Legg til din App" msgid "More Apps" msgstr "Flere Apps" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Velg en app" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Se applikasjonens side pÃ¥ apps.owncloud.org" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -164,7 +164,7 @@ msgstr "Last ned Android-klient" msgid "Download iOS Client" msgstr "Last ned iOS-klient" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Passord" @@ -234,11 +234,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Navn" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupper" @@ -250,26 +250,38 @@ msgstr "Opprett" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Annet" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Gruppeadministrator" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Slett" diff --git a/l10n/nl/core.po b/l10n/nl/core.po index bc83b48cd57..2631c0b1fd9 100644 --- a/l10n/nl/core.po +++ b/l10n/nl/core.po @@ -21,8 +21,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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" @@ -31,24 +31,24 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "Gebruiker %s deelde een bestand met u" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "Gebruiker %s deelde een map met u" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "Gebruiker %s deelde bestand \"%s\" met u. Het is hier te downloaden: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -93,59 +93,135 @@ msgstr "Geen categorie geselecteerd voor verwijdering." msgid "Error removing %s from favorites." msgstr "Verwijderen %s van favorieten is mislukt." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Zondag" + +#: js/config.php:32 +msgid "Monday" +msgstr "Maandag" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Dinsdag" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Woensdag" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Donderdag" + +#: js/config.php:32 +msgid "Friday" +msgstr "Vrijdag" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Zaterdag" + +#: js/config.php:33 +msgid "January" +msgstr "januari" + +#: js/config.php:33 +msgid "February" +msgstr "februari" + +#: js/config.php:33 +msgid "March" +msgstr "maart" + +#: js/config.php:33 +msgid "April" +msgstr "april" + +#: js/config.php:33 +msgid "May" +msgstr "mei" + +#: js/config.php:33 +msgid "June" +msgstr "juni" + +#: js/config.php:33 +msgid "July" +msgstr "juli" + +#: js/config.php:33 +msgid "August" +msgstr "augustus" + +#: js/config.php:33 +msgid "September" +msgstr "september" + +#: js/config.php:33 +msgid "October" +msgstr "oktober" + +#: js/config.php:33 +msgid "November" +msgstr "november" + +#: js/config.php:33 +msgid "December" +msgstr "december" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Instellingen" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "seconden geleden" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 minuut geleden" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} minuten geleden" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 uur geleden" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} uren geleden" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "vandaag" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "gisteren" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} dagen geleden" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "vorige maand" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} maanden geleden" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "maanden geleden" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "vorig jaar" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "jaar geleden" @@ -175,8 +251,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Fout" @@ -188,122 +264,141 @@ 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:124 js/share.js:594 +#: 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 +msgid "Shared" +msgstr "" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Fout tijdens het delen" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Fout tijdens het stoppen met delen" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Fout tijdens het veranderen van permissies" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Gedeeld met u en de groep {group} door {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Gedeeld met u door {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Deel met" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Deel met link" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Wachtwoord beveiliging" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Wachtwoord" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "E-mail link naar persoon" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Versturen" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Stel vervaldatum in" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Vervaldatum" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Deel via email:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Geen mensen gevonden" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Verder delen is niet toegestaan" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Gedeeld in {item} met {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Stop met delen" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "kan wijzigen" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "toegangscontrole" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "maak" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "bijwerken" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "verwijderen" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "deel" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Wachtwoord beveiligd" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Fout tijdens het verwijderen van de verval datum" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Fout tijdens het instellen van de vervaldatum" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Versturen ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "E-mail verzonden" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ownCloud wachtwoord herstellen" @@ -455,87 +550,11 @@ msgstr "Database server" msgid "Finish setup" msgstr "Installatie afronden" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Zondag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Maandag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Dinsdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Woensdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Donderdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Vrijdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Zaterdag" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "januari" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "februari" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "maart" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "april" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "mei" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "juni" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "juli" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "augustus" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "september" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "oktober" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "november" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "december" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "Webdiensten in eigen beheer" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Afmelden" diff --git a/l10n/nl/files.po b/l10n/nl/files.po index 5482d64d4e4..e89b67b08e6 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-01-21 00:04+0100\n" -"PO-Revision-Date: 2013-01-20 17:55+0000\n" -"Last-Translator: Wilfred Dijksman <info@wdijksman.nl>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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,65 +29,46 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Upload" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Kon %s niet verplaatsen" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Kan bestand niet hernoemen" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Er was geen bestand geladen. Onbekende fout" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Geen fout opgetreden, bestand successvol geupload." -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Het geüploade bestand overscheidt de upload_max_filesize optie in php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Het geüploade bestand is groter dan de MAX_FILE_SIZE richtlijn die is opgegeven in de HTML-formulier" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Het bestand is slechts gedeeltelijk geupload" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Geen bestand geüpload" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Een tijdelijke map mist" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Schrijven naar schijf mislukt" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Niet genoeg ruimte beschikbaar" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Ongeldige directory." @@ -95,151 +76,151 @@ msgstr "Ongeldige directory." msgid "Files" msgstr "Bestanden" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Stop delen" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Verwijder" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Hernoem" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} bestaat al" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "vervang" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "Stel een naam voor" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "annuleren" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "verving {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "ongedaan maken" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "verving {new_name} met {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "delen gestopt {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "verwijderde {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' is een ongeldige bestandsnaam." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Bestandsnaam kan niet leeg zijn." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Onjuiste naam; '\\', '/', '<', '>', ':', '\"', '|', '?' en '*' zijn niet toegestaan." -#: js/files.js:204 +#: 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 "Uw download wordt voorbereid. Dit kan enige tijd duren bij grote bestanden." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "uploaden van de file mislukt, het is of een directory of de bestandsgrootte is 0 bytes" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Upload Fout" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Sluit" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Wachten" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 bestand wordt ge-upload" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} bestanden aan het uploaden" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Uploaden geannuleerd." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL kan niet leeg zijn." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Ongeldige mapnaam. Gebruik van'Gedeeld' is voorbehouden aan Owncloud" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} bestanden gescanned" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "Fout tijdens het scannen" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Naam" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Bestandsgrootte" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Laatst aangepast" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 map" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} mappen" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 bestand" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} bestanden" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Upload" + #: templates/admin.php:5 msgid "File handling" msgstr "Bestand" @@ -288,32 +269,40 @@ msgstr "Map" msgid "From link" msgstr "Vanaf link" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Upload afbreken" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Er bevindt zich hier niets. Upload een bestand!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Download" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Bestanden te groot" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "De bestanden die u probeert te uploaden zijn groter dan de maximaal toegestane bestandsgrootte voor deze server." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Bestanden worden gescand, even wachten." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Er wordt gescand" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/nl/files_trashbin.po b/l10n/nl/files_trashbin.po new file mode 100644 index 00000000000..79849be8294 --- /dev/null +++ b/l10n/nl/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/nl/settings.po b/l10n/nl/settings.po index 792081672ed..bc6514ffacf 100644 --- a/l10n/nl/settings.po +++ b/l10n/nl/settings.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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" @@ -98,7 +98,7 @@ msgstr "Inschakelen" msgid "Saving..." msgstr "Aan het bewaren....." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Nederlands" @@ -110,15 +110,15 @@ msgstr "App toevoegen" msgid "More Apps" msgstr "Meer apps" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Selecteer een app" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Zie de applicatiepagina op apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-Gelicenseerd door <span class=\"author\"></span>" @@ -167,7 +167,7 @@ msgstr "Download Android Client" msgid "Download iOS Client" msgstr "Download iOS Client" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Wachtwoord" @@ -237,11 +237,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Ontwikkeld door de <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud gemeenschap</a>, de <a href=\"https://github.com/owncloud\" target=\"_blank\">bron code</a> is gelicenseerd onder de <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Naam" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Groepen" @@ -253,26 +253,38 @@ msgstr "Creëer" msgid "Default Storage" msgstr "Default opslag" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Ongelimiteerd" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Andere" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Groep beheerder" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Opslag" -#: templates/users.php:133 +#: 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 "Default" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "verwijderen" diff --git a/l10n/nn_NO/core.po b/l10n/nn_NO/core.po index 2bec4e1cdc3..f50e25d9507 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-30 00:23+0100\n" +"PO-Revision-Date: 2013-01-29 23:23+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -19,24 +19,24 @@ msgstr "" "Language: nn_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -81,59 +81,135 @@ msgstr "" msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Søndag" + +#: js/config.php:32 +msgid "Monday" +msgstr "MÃ¥ndag" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Tysdag" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Onsdag" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Torsdag" + +#: js/config.php:32 +msgid "Friday" +msgstr "Fredag" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Laurdag" + +#: js/config.php:33 +msgid "January" +msgstr "Januar" + +#: js/config.php:33 +msgid "February" +msgstr "Februar" + +#: js/config.php:33 +msgid "March" +msgstr "Mars" + +#: js/config.php:33 +msgid "April" +msgstr "April" + +#: js/config.php:33 +msgid "May" +msgstr "Mai" + +#: js/config.php:33 +msgid "June" +msgstr "Juni" + +#: js/config.php:33 +msgid "July" +msgstr "Juli" + +#: js/config.php:33 +msgid "August" +msgstr "August" + +#: js/config.php:33 +msgid "September" +msgstr "September" + +#: js/config.php:33 +msgid "October" +msgstr "Oktober" + +#: js/config.php:33 +msgid "November" +msgstr "November" + +#: js/config.php:33 +msgid "December" +msgstr "Desember" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Innstillingar" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "" @@ -163,8 +239,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Feil" @@ -176,122 +252,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Passord" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "" @@ -443,87 +538,11 @@ msgstr "Databasetenar" msgid "Finish setup" msgstr "Fullfør oppsettet" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Søndag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "MÃ¥ndag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Tysdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Onsdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Torsdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Fredag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Laurdag" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Januar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Februar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Mars" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "April" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Mai" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Juni" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Juli" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "August" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "September" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Oktober" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "November" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Desember" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "Vev tjenester under din kontroll" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Logg ut" diff --git a/l10n/nn_NO/files.po b/l10n/nn_NO/files.po index 20c27a56323..ccd8d42d8b6 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -19,65 +19,46 @@ msgstr "" "Language: nn_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Last opp" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Ingen feil, fila vart lasta opp" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Den opplasta fila er større enn variabelen MAX_FILE_SIZE i HTML-skjemaet" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Fila vart berre delvis lasta opp" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Ingen filer vart lasta opp" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Manglar ei mellombels mappe" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -85,151 +66,151 @@ msgstr "" msgid "Files" msgstr "Filer" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Slett" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Lukk" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Namn" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Storleik" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Endra" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Last opp" + #: templates/admin.php:5 msgid "File handling" msgstr "" @@ -278,32 +259,40 @@ msgstr "Mappe" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Ingenting her. Last noko opp!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Last ned" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "For stor opplasting" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Filene du prøver Ã¥ laste opp er større enn maksgrensa til denne tenaren." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/nn_NO/files_trashbin.po b/l10n/nn_NO/files_trashbin.po new file mode 100644 index 00000000000..522394a9a8e --- /dev/null +++ b/l10n/nn_NO/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nn_NO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/nn_NO/settings.po b/l10n/nn_NO/settings.po index 3eb12c318ad..db09ffd1142 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -89,7 +89,7 @@ msgstr "SlÃ¥ pÃ¥" msgid "Saving..." msgstr "" -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Nynorsk" @@ -101,15 +101,15 @@ msgstr "" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Vel ein applikasjon" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -158,7 +158,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Passord" @@ -228,11 +228,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Namn" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupper" @@ -244,26 +244,38 @@ msgstr "Lag" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Anna" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Slett" diff --git a/l10n/oc/core.po b/l10n/oc/core.po index 17e293699e2..8a0593cf3ec 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -18,24 +18,24 @@ msgstr "" "Language: oc\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -80,59 +80,135 @@ msgstr "Pas de categorias seleccionadas per escafar." msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Dimenge" + +#: js/config.php:32 +msgid "Monday" +msgstr "Diluns" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Dimarç" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Dimecres" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Dijòus" + +#: js/config.php:32 +msgid "Friday" +msgstr "Divendres" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Dissabte" + +#: js/config.php:33 +msgid "January" +msgstr "Genièr" + +#: js/config.php:33 +msgid "February" +msgstr "Febrièr" + +#: js/config.php:33 +msgid "March" +msgstr "Març" + +#: js/config.php:33 +msgid "April" +msgstr "Abril" + +#: js/config.php:33 +msgid "May" +msgstr "Mai" + +#: js/config.php:33 +msgid "June" +msgstr "Junh" + +#: js/config.php:33 +msgid "July" +msgstr "Julhet" + +#: js/config.php:33 +msgid "August" +msgstr "Agost" + +#: js/config.php:33 +msgid "September" +msgstr "Septembre" + +#: js/config.php:33 +msgid "October" +msgstr "Octobre" + +#: js/config.php:33 +msgid "November" +msgstr "Novembre" + +#: js/config.php:33 +msgid "December" +msgstr "Decembre" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Configuracion" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "segonda a" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 minuta a" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "uèi" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "ièr" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "mes passat" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "meses a" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "an passat" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "ans a" @@ -162,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Error" @@ -175,122 +251,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Parteja" + +#: 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 "Error al partejar" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Error al non partejar" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Error al cambiar permissions" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Parteja amb" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Parteja amb lo ligam" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Parat per senhal" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Senhal" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Met la data d'expiracion" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Data d'expiracion" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Parteja tras corrièl :" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Deguns trobat" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Tornar partejar es pas permis" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Non parteje" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "pòt modificar" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "Contraròtle d'acces" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "crea" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "met a jorn" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "escafa" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "parteja" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Parat per senhal" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Error al metre de la data d'expiracion" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Error setting expiration date" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "senhal d'ownCloud tornat botar" @@ -442,87 +537,11 @@ msgstr "Ã’ste de basa de donadas" msgid "Finish setup" msgstr "Configuracion acabada" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Dimenge" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Diluns" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Dimarç" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Dimecres" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Dijòus" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Divendres" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Dissabte" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Genièr" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Febrièr" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Març" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Abril" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Mai" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Junh" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Julhet" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Agost" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Septembre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Octobre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Novembre" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Decembre" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "Services web jos ton contraròtle" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Sortida" diff --git a/l10n/oc/files.po b/l10n/oc/files.po index 98f3014e02e..49be6c576e9 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -18,65 +18,46 @@ msgstr "" "Language: oc\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Amontcarga" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Amontcargament capitat, pas d'errors" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Lo fichièr amontcargat es mai gròs que la directiva «MAX_FILE_SIZE» especifiada dins lo formulari HTML" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Lo fichièr foguèt pas completament amontcargat" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Cap de fichièrs son estats amontcargats" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Un dorsièr temporari manca" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "L'escriptura sul disc a fracassat" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -84,151 +65,151 @@ msgstr "" msgid "Files" msgstr "Fichièrs" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Non parteja" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Escafa" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Torna nomenar" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "remplaça" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "nom prepausat" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "anulla" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "defar" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Impossible d'amontcargar lo teu fichièr qu'es un repertòri o que ten pas que 0 octet." -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Error d'amontcargar" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Al esperar" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 fichièr al amontcargar" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Amontcargar anullat." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "error pendant l'exploracion" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nom" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Talha" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Modificat" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Amontcarga" + #: templates/admin.php:5 msgid "File handling" msgstr "Manejament de fichièr" @@ -277,32 +258,40 @@ msgstr "Dorsièr" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr " Anulla l'amontcargar" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Pas res dedins. Amontcarga qualquaren" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Avalcarga" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Amontcargament tròp gròs" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Los fichièrs que sias a amontcargar son tròp pesucs per la talha maxi pel servidor." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Los fiichièrs son a èsser explorats, " -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Exploracion en cors" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/oc/files_trashbin.po b/l10n/oc/files_trashbin.po new file mode 100644 index 00000000000..7d4329b2947 --- /dev/null +++ b/l10n/oc/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: oc\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/oc/settings.po b/l10n/oc/settings.po index df76be9ca67..593221357c3 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -88,7 +88,7 @@ msgstr "Activa" msgid "Saving..." msgstr "Enregistra..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__language_name__" @@ -100,15 +100,15 @@ msgstr "Ajusta ton App" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Selecciona una applicacion" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Agacha la pagina d'applications en cò de apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licençiat per <span class=\"author\"></span>" @@ -157,7 +157,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Senhal" @@ -227,11 +227,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nom" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grops" @@ -243,26 +243,38 @@ msgstr "Crea" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Autres" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Grop Admin" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Escafa" diff --git a/l10n/pl/core.po b/l10n/pl/core.po index 4e0e383e612..73e2387f9d8 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" @@ -27,24 +27,24 @@ 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/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "Użytkownik %s współdzieli plik z tobÄ…" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "Uzytkownik %s wspóldzieli folder z toba" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "Użytkownik %s współdzieli plik \"%s\" z tobÄ…. Jest dostÄ™pny tutaj: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -89,59 +89,135 @@ msgstr "Nie ma kategorii zaznaczonych do usuniÄ™cia." msgid "Error removing %s from favorites." msgstr "Błąd usuniÄ™cia %s z ulubionych." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Niedziela" + +#: js/config.php:32 +msgid "Monday" +msgstr "PoniedziaÅ‚ek" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Wtorek" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Åšroda" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Czwartek" + +#: js/config.php:32 +msgid "Friday" +msgstr "PiÄ…tek" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Sobota" + +#: js/config.php:33 +msgid "January" +msgstr "StyczeÅ„" + +#: js/config.php:33 +msgid "February" +msgstr "Luty" + +#: js/config.php:33 +msgid "March" +msgstr "Marzec" + +#: js/config.php:33 +msgid "April" +msgstr "KwiecieÅ„" + +#: js/config.php:33 +msgid "May" +msgstr "Maj" + +#: js/config.php:33 +msgid "June" +msgstr "Czerwiec" + +#: js/config.php:33 +msgid "July" +msgstr "Lipiec" + +#: js/config.php:33 +msgid "August" +msgstr "SierpieÅ„" + +#: js/config.php:33 +msgid "September" +msgstr "WrzesieÅ„" + +#: js/config.php:33 +msgid "October" +msgstr "Październik" + +#: js/config.php:33 +msgid "November" +msgstr "Listopad" + +#: js/config.php:33 +msgid "December" +msgstr "GrudzieÅ„" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Ustawienia" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "sekund temu" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 minute temu" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} minut temu" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 godzine temu" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} godzin temu" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "dziÅ›" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "wczoraj" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} dni temu" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "ostani miesiÄ…c" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} miesiÄ™cy temu" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "miesiÄ™cy temu" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "ostatni rok" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "lat temu" @@ -171,8 +247,8 @@ msgid "The object type is not specified." msgstr "Typ obiektu nie jest okreÅ›lony." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Błąd" @@ -184,122 +260,141 @@ msgstr "Nazwa aplikacji nie jest okreÅ›lona." msgid "The required file {file} is not installed!" msgstr "Żądany plik {file} nie jest zainstalowany!" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "UdostÄ™pnij" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Shared" +msgstr "UdostÄ™pniono" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Błąd podczas współdzielenia" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Błąd podczas zatrzymywania współdzielenia" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Błąd przy zmianie uprawnieÅ„" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "UdostÄ™pnione Tobie i grupie {group} przez {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "UdostÄ™pnione Ci przez {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Współdziel z" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Współdziel z link" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Zabezpieczone hasÅ‚em" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "HasÅ‚o" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Email do osoby" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "WyÅ›lij" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Ustaw datÄ™ wygaÅ›niÄ™cia" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Data wygaÅ›niÄ™cia" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Współdziel poprzez maila" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Nie znaleziono ludzi" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Współdzielenie nie jest możliwe" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Współdzielone w {item} z {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Zatrzymaj współdzielenie" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "można edytować" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "kontrola dostÄ™pu" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "utwórz" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "uaktualnij" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "usuÅ„" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "współdziel" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Zabezpieczone hasÅ‚em" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Błąd niszczenie daty wygaÅ›niÄ™cia" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Błąd podczas ustawiania daty wygaÅ›niÄ™cia" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "WysyÅ‚anie..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "WyÅ›lij Email" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "restart hasÅ‚a" @@ -451,87 +546,11 @@ msgstr "Komputer bazy danych" msgid "Finish setup" msgstr "ZakoÅ„cz konfigurowanie" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Niedziela" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "PoniedziaÅ‚ek" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Wtorek" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Åšroda" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Czwartek" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "PiÄ…tek" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Sobota" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "StyczeÅ„" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Luty" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Marzec" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "KwiecieÅ„" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Maj" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Czerwiec" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Lipiec" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "SierpieÅ„" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "WrzesieÅ„" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Październik" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Listopad" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "GrudzieÅ„" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "usÅ‚ugi internetowe pod kontrolÄ…" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Wylogowuje użytkownika" diff --git a/l10n/pl/files.po b/l10n/pl/files.po index 14c09603236..36c7353658d 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" @@ -25,65 +25,46 @@ 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:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "PrzeÅ›lij" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Nie można byÅ‚o przenieść %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Nie można zmienić nazwy pliku" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Plik nie zostaÅ‚ zaÅ‚adowany. Nieznany błąd" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "PrzesÅ‚ano plik" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Wgrany plik przekracza wartość upload_max_filesize zdefiniowanÄ… w php.ini: " -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Rozmiar przesÅ‚anego pliku przekracza maksymalnÄ… wartość dyrektywy upload_max_filesize, zawartÄ… formularzu HTML" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Plik przesÅ‚ano tylko częściowo" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Nie przesÅ‚ano żadnego pliku" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Brak katalogu tymczasowego" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Błąd zapisu na dysk" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Za maÅ‚o miejsca" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "ZÅ‚a Å›cieżka." @@ -91,151 +72,151 @@ msgstr "ZÅ‚a Å›cieżka." msgid "Files" msgstr "Pliki" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Nie udostÄ™pniaj" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Usuwa element" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "ZmieÅ„ nazwÄ™" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} już istnieje" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "zastap" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "zasugeruj nazwÄ™" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "anuluj" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "zastÄ…piony {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "wróć" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "zastÄ…piony {new_name} z {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "UdostÄ™pniane wstrzymane {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "usuniÄ™to {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' jest nieprawidÅ‚owÄ… nazwÄ… pliku." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Nazwa pliku nie może być pusta." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Niepoprawna nazwa, Znaki '\\', '/', '<', '>', ':', '\"', '|', '?' oraz '*'sÄ… niedozwolone." -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Nie można wczytać pliku jeÅ›li jest katalogiem lub ma 0 bajtów" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Błąd wczytywania" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Zamknij" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "OczekujÄ…ce" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 plik wczytany" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} przesyÅ‚anie plików" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Wczytywanie anulowane." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL nie może być pusty." -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "{count} pliki skanowane" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "WystÄ…piÅ‚ błąd podczas skanowania" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nazwa" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Rozmiar" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Czas modyfikacji" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 folder" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} foldery" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 plik" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} pliki" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "PrzeÅ›lij" + #: templates/admin.php:5 msgid "File handling" msgstr "ZarzÄ…dzanie plikami" @@ -284,32 +265,40 @@ msgstr "Katalog" msgid "From link" msgstr "Z linku" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "PrzestaÅ„ wysyÅ‚ać" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Brak zawartoÅ›ci. ProszÄ™ wysÅ‚ać pliki!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Pobiera element" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "WysyÅ‚any plik ma za duży rozmiar" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Pliki które próbujesz przesÅ‚ać, przekraczajÄ… maksymalnÄ…, dopuszczalnÄ… wielkość." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Skanowanie plików, proszÄ™ czekać." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Aktualnie skanowane" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/pl/files_trashbin.po b/l10n/pl/files_trashbin.po new file mode 100644 index 00000000000..1c2572023cb --- /dev/null +++ b/l10n/pl/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"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/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/pl/lib.po b/l10n/pl/lib.po index 5d59857b1b6..917ce3b654b 100644 --- a/l10n/pl/lib.po +++ b/l10n/pl/lib.po @@ -5,14 +5,14 @@ # Translators: # Cyryl Sochacki <>, 2012. # Cyryl Sochacki <cyrylsochacki@gmail.com>, 2012. -# Marcin MaÅ‚ecki <gerber@tkdami.net>, 2012. +# Marcin MaÅ‚ecki <gerber@tkdami.net>, 2012-2013. 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" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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 <gerber@tkdami.net>\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" @@ -60,9 +60,9 @@ msgstr "Wróć do plików" msgid "Selected files too large to generate zip file." msgstr "Wybrane pliki sÄ… zbyt duże, aby wygenerować plik zip." -#: helper.php:228 +#: helper.php:229 msgid "couldn't be determined" -msgstr "" +msgstr "nie może zostać znaleziony" #: json.php:28 msgid "Application is not enabled" diff --git a/l10n/pl/settings.po b/l10n/pl/settings.po index e54af3f5f75..6390f9daaf1 100644 --- a/l10n/pl/settings.po +++ b/l10n/pl/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-01-21 00:04+0100\n" -"PO-Revision-Date: 2013-01-20 19:42+0000\n" -"Last-Translator: b13n1u <b13n1u@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -98,7 +98,7 @@ msgstr "Włącz" msgid "Saving..." msgstr "Zapisywanie..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Polski" @@ -110,15 +110,15 @@ msgstr "Dodaj aplikacje" msgid "More Apps" msgstr "WiÄ™cej aplikacji" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Zaznacz aplikacje" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Zobacz stronÄ™ aplikacji na apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licencjonowane przez <span class=\"author\"></span>" @@ -167,7 +167,7 @@ msgstr "Pobierz klienta dla Androida" msgid "Download iOS Client" msgstr "Pobierz klienta dla iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "HasÅ‚o" @@ -237,11 +237,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Stworzone przez <a href=\"http://ownCloud.org/contact\" target=\"_blank\"> spoÅ‚eczność ownCloud</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">kod źródÅ‚owy</a> na licencji <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nazwa" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupy" @@ -253,26 +253,38 @@ msgstr "Utwórz" msgid "Default Storage" msgstr "DomyÅ›lny magazyn" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Bez limitu" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Inne" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Grupa Admin" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Magazyn" -#: templates/users.php:133 +#: 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 "DomyÅ›lny" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "UsunÌ" diff --git a/l10n/pl_PL/core.po b/l10n/pl_PL/core.po index d5e325117d9..7f8272bc084 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-30 00:23+0100\n" +"PO-Revision-Date: 2013-01-29 23:23+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" @@ -17,24 +17,24 @@ 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/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -79,59 +79,135 @@ msgstr "" msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Ustawienia" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "" @@ -161,8 +237,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "" @@ -174,122 +250,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "" @@ -441,87 +536,11 @@ msgstr "" msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "" diff --git a/l10n/pl_PL/files.po b/l10n/pl_PL/files.po index d76af487676..ab00380cb6b 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" @@ -17,65 +17,46 @@ 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:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -83,151 +64,151 @@ msgstr "" msgid "Files" msgstr "" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "" + #: templates/admin.php:5 msgid "File handling" msgstr "" @@ -276,32 +257,40 @@ msgstr "" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/pl_PL/files_trashbin.po b/l10n/pl_PL/files_trashbin.po new file mode 100644 index 00000000000..6a27483b434 --- /dev/null +++ b/l10n/pl_PL/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"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/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/pl_PL/settings.po b/l10n/pl_PL/settings.po index 5689bcb950d..29b1d16e594 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" @@ -87,7 +87,7 @@ msgstr "" msgid "Saving..." msgstr "" -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "" @@ -99,15 +99,15 @@ msgstr "" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -156,7 +156,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "" @@ -226,11 +226,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "" @@ -242,26 +242,38 @@ msgstr "" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "" diff --git a/l10n/pt_BR/core.po b/l10n/pt_BR/core.po index da3de9ac4c4..c180eefca15 100644 --- a/l10n/pt_BR/core.po +++ b/l10n/pt_BR/core.po @@ -10,6 +10,7 @@ # Guilherme Maluf Balzana <guimalufb@gmail.com>, 2012. # <henrique@meira.net>, 2012. # <philippi.sedir@gmail.com>, 2012. +# Rodrigo Tavares <rodrigo.st23@hotmail.com>, 2013. # Thiago Vicente <thiagovice@gmail.com>, 2012. # Unforgiving Fallout <>, 2012. # Van Der Fran <transifex@vanderland.com>, 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" +"Last-Translator: rodrigost23 <rodrigo.st23@hotmail.com>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,29 +28,29 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" -msgstr "" +msgstr "O usuário %s compartilhou um arquivo com você" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" -msgstr "" +msgstr "O usuário %s compartilhou uma pasta com você" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" -msgstr "" +msgstr "O usuário %s compartilhou com você o arquivo \"%s\", que está disponÃvel para download em: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " "here: %s" -msgstr "" +msgstr "O usuário %s compartilhou com você a pasta \"%s\", que está disponÃvel para download em: %s" #: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 msgid "Category type not provided." @@ -89,59 +90,135 @@ msgstr "Nenhuma categoria selecionada para deletar." msgid "Error removing %s from favorites." msgstr "Erro ao remover %s dos favoritos." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Domingo" + +#: js/config.php:32 +msgid "Monday" +msgstr "Segunda-feira" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Terça-feira" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Quarta-feira" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Quinta-feira" + +#: js/config.php:32 +msgid "Friday" +msgstr "Sexta-feira" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Sábado" + +#: js/config.php:33 +msgid "January" +msgstr "Janeiro" + +#: js/config.php:33 +msgid "February" +msgstr "Fevereiro" + +#: js/config.php:33 +msgid "March" +msgstr "Março" + +#: js/config.php:33 +msgid "April" +msgstr "Abril" + +#: js/config.php:33 +msgid "May" +msgstr "Maio" + +#: js/config.php:33 +msgid "June" +msgstr "Junho" + +#: js/config.php:33 +msgid "July" +msgstr "Julho" + +#: js/config.php:33 +msgid "August" +msgstr "Agosto" + +#: js/config.php:33 +msgid "September" +msgstr "Setembro" + +#: js/config.php:33 +msgid "October" +msgstr "Outubro" + +#: js/config.php:33 +msgid "November" +msgstr "Novembro" + +#: js/config.php:33 +msgid "December" +msgstr "Dezembro" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Configurações" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "segundos atrás" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 minuto atrás" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} minutos atrás" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 hora atrás" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} horas atrás" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "hoje" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "ontem" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} dias atrás" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "último mês" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} meses atrás" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "meses atrás" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "último ano" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "anos atrás" @@ -171,8 +248,8 @@ msgid "The object type is not specified." msgstr "O tipo de objeto 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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Erro" @@ -184,121 +261,140 @@ msgstr "O nome do app não foi especificado." msgid "The required file {file} is not installed!" msgstr "O arquivo {file} necessário não está instalado!" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Compartilhar" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Shared" +msgstr "Compartilhados" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Erro ao compartilhar" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Erro ao descompartilhar" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Erro ao mudar permissões" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Compartilhado com você e com o grupo {group} por {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Compartilhado com você por {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Compartilhar com" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Compartilhar com link" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Proteger com senha" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Senha" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" -msgstr "" +msgstr "Enviar link por e-mail" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" -msgstr "" +msgstr "Enviar" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Definir data de expiração" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Data de expiração" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Compartilhar via e-mail:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Nenhuma pessoa encontrada" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Não é permitido re-compartilhar" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Compartilhado em {item} com {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Descompartilhar" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "pode editar" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "controle de acesso" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "criar" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "atualizar" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "remover" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "compartilhar" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Protegido com senha" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Erro ao remover data de expiração" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Erro ao definir data de expiração" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." -msgstr "" +msgstr "Enviando ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" -msgstr "" +msgstr "E-mail enviado" + +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "A atualização falhou. Por favor, relate este problema para a <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">comunidade ownCloud</a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "A atualização teve êxito. Você será redirecionado ao ownCloud agora." #: lostpassword/controller.php:47 msgid "ownCloud password reset" @@ -451,87 +547,11 @@ msgstr "Banco de dados do host" msgid "Finish setup" msgstr "Concluir configuração" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Domingo" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Segunda-feira" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Terça-feira" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Quarta-feira" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Quinta-feira" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Sexta-feira" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Sábado" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Janeiro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Fevereiro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Março" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Abril" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Maio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Junho" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Julho" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Agosto" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Setembro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Outubro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Novembro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Dezembro" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "web services sob seu controle" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Sair" @@ -572,4 +592,4 @@ msgstr "próximo" #: templates/update.php:3 #, php-format msgid "Updating ownCloud to version %s, this may take a while." -msgstr "" +msgstr "Atualizando ownCloud para a versão %s, isto pode levar algum tempo." diff --git a/l10n/pt_BR/files.po b/l10n/pt_BR/files.po index e56d1ca354f..fdbe76ca2de 100644 --- a/l10n/pt_BR/files.po +++ b/l10n/pt_BR/files.po @@ -7,6 +7,7 @@ # <fred.maranhao@gmail.com>, 2012. # Guilherme Maluf Balzana <guimalufb@gmail.com>, 2012. # <philippi.sedir@gmail.com>, 2012. +# Rodrigo Tavares <rodrigo.st23@hotmail.com>, 2013. # <targinosilveira@gmail.com>, 2012. # Thiago Vicente <thiagovice@gmail.com>, 2012. # Unforgiving Fallout <>, 2012. @@ -15,8 +16,8 @@ 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 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -25,217 +26,198 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Carregar" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Nenhum arquivo foi transferido. Erro desconhecido" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Não houve nenhum erro, o arquivo foi transferido com sucesso" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "O arquivo enviado excede a diretiva upload_max_filesize no php.ini: " -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "O arquivo carregado excede o MAX_FILE_SIZE que foi especificado no formulário HTML" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "O arquivo foi transferido parcialmente" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Nenhum arquivo foi transferido" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Pasta temporária não encontrada" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Falha ao escrever no disco" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." -msgstr "" +msgstr "Diretório inválido." #: appinfo/app.php:10 msgid "Files" msgstr "Arquivos" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Descompartilhar" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Excluir" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Renomear" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} já existe" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "substituir" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "sugerir nome" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "substituÃdo {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "desfazer" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "SubstituÃdo {old_name} por {new_name} " -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "{files} não compartilhados" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "{files} apagados" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." -msgstr "" +msgstr "'.' é um nome de arquivo inválido." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." -msgstr "" +msgstr "O nome do arquivo não pode estar vazio." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Nome inválido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' não são permitidos." -#: js/files.js:204 +#: 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 "" +msgstr "Seu download está sendo preparado. Isto pode levar algum tempo se os arquivos forem grandes." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "ImpossÃvel enviar seus arquivo como diretório ou ele tem 0 bytes." -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Erro de envio" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Fechar" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Pendente" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "enviando 1 arquivo" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "Enviando {count} arquivos" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Envio cancelado." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL não pode ficar em branco" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" -msgstr "" - -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} arquivos scaneados" +msgstr "Nome de pasta inválido. O uso de 'Shared' é reservado para o Owncloud" -#: js/files.js:783 -msgid "error while scanning" -msgstr "erro durante verificação" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nome" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Tamanho" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Modificado" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 pasta" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} pastas" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 arquivo" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} arquivos" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Carregar" + #: templates/admin.php:5 msgid "File handling" msgstr "Tratamento de Arquivo" @@ -284,32 +266,40 @@ msgstr "Pasta" msgid "From link" msgstr "Do link" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Cancelar upload" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Nada aqui.Carrege alguma coisa!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Baixar" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Arquivo muito grande" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Os arquivos que você está tentando carregar excedeu o tamanho máximo para arquivos no servidor." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Arquivos sendo escaneados, por favor aguarde." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Scanning atual" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/pt_BR/files_encryption.po b/l10n/pt_BR/files_encryption.po index ee24c51910d..5c733f9c615 100644 --- a/l10n/pt_BR/files_encryption.po +++ b/l10n/pt_BR/files_encryption.po @@ -4,13 +4,14 @@ # # Translators: # <philippi.sedir@gmail.com>, 2012. +# Rodrigo Tavares <rodrigo.st23@hotmail.com>, 2013. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 16:40+0000\n" +"Last-Translator: rodrigost23 <rodrigo.st23@hotmail.com>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,53 +23,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "alterado para criptografia por parte do cliente" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +msgstr "Mudar senha de criptografia para senha de login" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +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 "" +msgstr "Não foi possÃvel mudar sua senha de criptografia de arquivos para sua senha de login" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Escolha o modo de criptografia:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Criptografia por parte do cliente (mais segura, mas torna impossÃvel acessar seus dados a partir da interface web)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Criptografia por parte do servidor (permite que você acesse seus arquivos da interface web e do cliente desktop)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Nenhuma (sem qualquer criptografia)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Importante: Uma vez que tiver escolhido um modo de criptografia, não há um meio de voltar atrás" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "EspecÃfico por usuário (deixa o usuário decidir)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/pt_BR/files_external.po b/l10n/pt_BR/files_external.po index cb394018175..3c17453294e 100644 --- a/l10n/pt_BR/files_external.po +++ b/l10n/pt_BR/files_external.po @@ -4,13 +4,14 @@ # # Translators: # <philippi.sedir@gmail.com>, 2012. +# Rodrigo Tavares <rodrigo.st23@hotmail.com>, 2013. 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 15:50+0000\n" +"Last-Translator: rodrigost23 <rodrigo.st23@hotmail.com>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,11 +27,11 @@ msgstr "Acesso concedido" msgid "Error configuring Dropbox storage" msgstr "Erro ao configurar armazenamento do Dropbox" -#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 +#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:41 msgid "Grant access" msgstr "Permitir acesso" -#: js/dropbox.js:73 js/google.js:72 +#: js/dropbox.js:73 js/google.js:73 msgid "Fill out all required fields" msgstr "Preencha todos os campos obrigatórios" @@ -38,22 +39,22 @@ msgstr "Preencha todos os campos obrigatórios" msgid "Please provide a valid Dropbox app key and secret." msgstr "Por favor forneça um app key e secret válido do Dropbox" -#: js/google.js:26 js/google.js:73 js/google.js:78 +#: js/google.js:26 js/google.js:74 js/google.js:79 msgid "Error configuring Google Drive storage" msgstr "Erro ao configurar armazenamento do Google Drive" -#: lib/config.php:434 +#: lib/config.php:405 msgid "" "<b>Warning:</b> \"smbclient\" is not installed. Mounting of CIFS/SMB shares " "is not possible. Please ask your system administrator to install it." -msgstr "" +msgstr "<b>Aviso:</b> \"smbclient\" não está instalado. Não será possÃvel montar compartilhamentos de CIFS/SMB. Por favor, peça ao seu administrador do sistema para instalá-lo." -#: lib/config.php:435 +#: lib/config.php:406 msgid "" "<b>Warning:</b> 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 "<b>Aviso:</b> O suporte para FTP do PHP não está ativado ou instalado. Não será possÃvel montar compartilhamentos FTP. Por favor, peça ao seu administrador do sistema para instalá-lo." #: templates/settings.php:3 msgid "External Storage" @@ -100,7 +101,7 @@ msgid "Users" msgstr "Usuários" #: 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 "Remover" @@ -112,10 +113,10 @@ msgstr "Habilitar Armazenamento Externo do Usuário" msgid "Allow users to mount their own external storage" msgstr "Permitir usuários a montar seus próprios armazenamentos externos" -#: templates/settings.php:139 +#: templates/settings.php:136 msgid "SSL root certificates" msgstr "Certificados SSL raÃz" -#: templates/settings.php:158 +#: templates/settings.php:153 msgid "Import Root Certificate" msgstr "Importar Certificado RaÃz" diff --git a/l10n/pt_BR/files_trashbin.po b/l10n/pt_BR/files_trashbin.po new file mode 100644 index 00000000000..35114633850 --- /dev/null +++ b/l10n/pt_BR/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/pt_BR/files_versions.po b/l10n/pt_BR/files_versions.po index 63442db0efe..d6cf483ba38 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-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 15:50+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/lib.po b/l10n/pt_BR/lib.po index f1a550574ba..d20d57c8145 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-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 15:50+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -44,23 +44,23 @@ msgstr "Aplicações" msgid "Admin" msgstr "Admin" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Download ZIP está desligado." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Arquivos precisam ser baixados um de cada vez." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Voltar para Arquivos" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Arquivos selecionados são muito grandes para gerar arquivo zip." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" diff --git a/l10n/pt_BR/settings.po b/l10n/pt_BR/settings.po index 30c7088ec92..49d4158b409 100644 --- a/l10n/pt_BR/settings.po +++ b/l10n/pt_BR/settings.po @@ -17,9 +17,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 20:18+0000\n" -"Last-Translator: rodrigost23 <rodrigo.st23@hotmail.com>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,7 +29,7 @@ msgstr "" #: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" -msgstr "Não foi possivel carregar lista da App Store" +msgstr "Não foi possÃvel carregar lista da App Store" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -37,35 +37,35 @@ msgstr "Grupo já existe" #: ajax/creategroup.php:19 msgid "Unable to add group" -msgstr "Não foi possivel adicionar grupo" +msgstr "Não foi possÃvel adicionar grupo" #: ajax/enableapp.php:11 msgid "Could not enable app. " -msgstr "Não pôde habilitar aplicação" +msgstr "Não foi possÃvel habilitar aplicativo." #: ajax/lostpassword.php:12 msgid "Email saved" -msgstr "Email gravado" +msgstr "E-mail guardado" #: ajax/lostpassword.php:14 msgid "Invalid email" -msgstr "Email inválido" +msgstr "E-mail inválido" #: ajax/removegroup.php:13 msgid "Unable to delete group" -msgstr "Não foi possivel remover grupo" +msgstr "Não foi possÃvel remover grupo" #: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 msgid "Authentication error" -msgstr "erro de autenticação" +msgstr "Erro de autenticação" #: ajax/removeuser.php:24 msgid "Unable to delete user" -msgstr "Não foi possivel remover usuário" +msgstr "Não foi possÃvel remover usuário" #: ajax/setlanguage.php:15 msgid "Language changed" -msgstr "Mudou Idioma" +msgstr "Idioma alterado" #: ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" @@ -78,28 +78,28 @@ msgstr "Admins não podem se remover do grupo admin" #: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" -msgstr "Não foi possivel adicionar usuário ao grupo %s" +msgstr "Não foi possÃvel adicionar usuário ao grupo %s" #: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" -msgstr "Não foi possivel remover usuário ao grupo %s" +msgstr "Não foi possÃvel remover usuário do grupo %s" #: js/apps.js:28 js/apps.js:67 msgid "Disable" -msgstr "Desabilitado" +msgstr "Desabilitar" #: js/apps.js:28 js/apps.js:55 msgid "Enable" -msgstr "Habilitado" +msgstr "Habilitar" #: js/personal.js:69 msgid "Saving..." -msgstr "Gravando..." +msgstr "Guardando..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" -msgstr "Português do Brasil" +msgstr "Português (Brasil)" #: templates/apps.php:10 msgid "Add your App" @@ -109,33 +109,33 @@ msgstr "Adicione seu Aplicativo" msgid "More Apps" msgstr "Mais Apps" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" -msgstr "Selecione uma Aplicação" +msgstr "Selecione um Aplicativo" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Ver página do aplicativo em apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licenciado por <span class=\"author\"></span>" #: templates/help.php:3 msgid "User Documentation" -msgstr "" +msgstr "Documentação de Usuário" #: templates/help.php:4 msgid "Administrator Documentation" -msgstr "" +msgstr "Documentação de Administrador" #: templates/help.php:6 msgid "Online Documentation" -msgstr "" +msgstr "Documentação Online" #: templates/help.php:7 msgid "Forum" -msgstr "" +msgstr "Fórum" #: templates/help.php:9 msgid "Bugtracker" @@ -143,7 +143,7 @@ msgstr "" #: templates/help.php:11 msgid "Commercial Support" -msgstr "" +msgstr "Suporte Comercial" #: templates/personal.php:8 #, php-format @@ -156,17 +156,17 @@ msgstr "Clientes" #: templates/personal.php:13 msgid "Download Desktop Clients" -msgstr "" +msgstr "Baixar Clientes Desktop" #: templates/personal.php:14 msgid "Download Android Client" -msgstr "" +msgstr "Baixar Cliente Android" #: templates/personal.php:15 msgid "Download iOS Client" -msgstr "" +msgstr "Baixar Cliente iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Senha" @@ -196,15 +196,15 @@ msgstr "Alterar senha" #: templates/personal.php:33 msgid "Email" -msgstr "Email" +msgstr "E-mail" #: templates/personal.php:34 msgid "Your email address" -msgstr "Seu endereço de email" +msgstr "Seu endereço de e-mail" #: templates/personal.php:35 msgid "Fill in an email address to enable password recovery" -msgstr "Preencha um endereço de email para habilitar a recuperação de senha" +msgstr "Preencha um endereço de e-mail para habilitar a recuperação de senha" #: templates/personal.php:41 templates/personal.php:42 msgid "Language" @@ -216,15 +216,15 @@ msgstr "Ajude a traduzir" #: templates/personal.php:52 msgid "WebDAV" -msgstr "" +msgstr "WebDAV" #: templates/personal.php:54 msgid "Use this address to connect to your ownCloud in your file manager" -msgstr "" +msgstr "Usar este endereço para conectar-se ao seu ownCloud no seu gerenciador de arquivos" #: templates/personal.php:63 msgid "Version" -msgstr "" +msgstr "Versão" #: templates/personal.php:65 msgid "" @@ -236,11 +236,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Desenvolvido pela <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunidade ownCloud</a>, o <a href=\"https://github.com/owncloud\" target=\"_blank\">código fonte</a> está licenciado sob <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nome" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "Nome de Login" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupos" @@ -250,28 +250,40 @@ msgstr "Criar" #: templates/users.php:35 msgid "Default Storage" -msgstr "" +msgstr "Armazenamento Padrão" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" -msgstr "" +msgstr "Ilimitado" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Outro" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "Nome de Exibição" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Grupo Administrativo" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" +msgstr "Armazenamento" + +#: templates/users.php:97 +msgid "change display name" msgstr "" -#: templates/users.php:133 -msgid "Default" +#: templates/users.php:101 +msgid "set new password" msgstr "" -#: templates/users.php:161 +#: templates/users.php:137 +msgid "Default" +msgstr "Padrão" + +#: templates/users.php:165 msgid "Delete" msgstr "Apagar" diff --git a/l10n/pt_BR/user_webdavauth.po b/l10n/pt_BR/user_webdavauth.po index db7d62a36b8..be539b59a8a 100644 --- a/l10n/pt_BR/user_webdavauth.po +++ b/l10n/pt_BR/user_webdavauth.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Rodrigo Tavares <rodrigo.st23@hotmail.com>, 2013. # <thoriumbr@gmail.com>, 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 16:22+0000\n" +"Last-Translator: rodrigost23 <rodrigo.st23@hotmail.com>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\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 "Autenticação WebDAV" #: templates/settings.php:4 msgid "URL: http://" -msgstr "" +msgstr "URL: http://" #: templates/settings.php:6 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 "O ownCloud enviará as credenciais do usuário para esta URL. Este plugin verifica a resposta e interpreta o os códigos de status do HTTP 401 e 403 como credenciais inválidas, e todas as outras respostas como credenciais válidas." diff --git a/l10n/pt_PT/core.po b/l10n/pt_PT/core.po index 8cf1dad2efb..de0bb148c45 100644 --- a/l10n/pt_PT/core.po +++ b/l10n/pt_PT/core.po @@ -4,6 +4,8 @@ # # Translators: # <daniel@mouxy.net>, 2012-2013. +# Daniel Pinto <daniel@mouxy.net>, 2013. +# <duartegrilo@gmail.com>, 2013. # Duarte Velez Grilo <duartegrilo@gmail.com>, 2012. # <helder.meneses@gmail.com>, 2011, 2012. # Helder Meneses <helder.meneses@gmail.com>, 2012. @@ -13,9 +15,9 @@ 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" +"Last-Translator: Duarte Velez Grilo <duartegrilo@gmail.com>\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" @@ -23,24 +25,24 @@ msgstr "" "Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "O utilizador %s partilhou um ficheiro consigo." -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "O utilizador %s partilhou uma pasta consigo." -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "O utilizador %s partilhou o ficheiro \"%s\" consigo. Está disponÃvel para download aqui: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -78,66 +80,142 @@ msgstr "Erro a adicionar %s aos favoritos" #: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 msgid "No categories selected for deletion." -msgstr "Nenhuma categoria seleccionar para eliminar" +msgstr "Nenhuma categoria seleccionada para apagar" #: ajax/vcategories/removeFromFavorites.php:35 #, php-format msgid "Error removing %s from favorites." msgstr "Erro a remover %s dos favoritos." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Domingo" + +#: js/config.php:32 +msgid "Monday" +msgstr "Segunda" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Terça" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Quarta" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Quinta" + +#: js/config.php:32 +msgid "Friday" +msgstr "Sexta" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Sábado" + +#: js/config.php:33 +msgid "January" +msgstr "Janeiro" + +#: js/config.php:33 +msgid "February" +msgstr "Fevereiro" + +#: js/config.php:33 +msgid "March" +msgstr "Março" + +#: js/config.php:33 +msgid "April" +msgstr "Abril" + +#: js/config.php:33 +msgid "May" +msgstr "Maio" + +#: js/config.php:33 +msgid "June" +msgstr "Junho" + +#: js/config.php:33 +msgid "July" +msgstr "Julho" + +#: js/config.php:33 +msgid "August" +msgstr "Agosto" + +#: js/config.php:33 +msgid "September" +msgstr "Setembro" + +#: js/config.php:33 +msgid "October" +msgstr "Outubro" + +#: js/config.php:33 +msgid "November" +msgstr "Novembro" + +#: js/config.php:33 +msgid "December" +msgstr "Dezembro" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Definições" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "Minutos atrás" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" -msgstr "Falta 1 minuto" +msgstr "Há 1 minuto" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} minutos atrás" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "Há 1 hora" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "Há {hours} horas atrás" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "hoje" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "ontem" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} dias atrás" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "ultÃmo mês" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "Há {months} meses atrás" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "meses atrás" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "ano passado" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "anos atrás" @@ -167,8 +245,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Erro" @@ -180,121 +258,140 @@ msgstr "O nome da aplicação não foi especificado" msgid "The required file {file} is not installed!" msgstr "O ficheiro necessário {file} não está instalado!" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Partilhar" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Shared" +msgstr "Partilhado" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Erro ao partilhar" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Erro ao deixar de partilhar" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Erro ao mudar permissões" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Partilhado consigo e com o grupo {group} por {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Partilhado consigo por {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Partilhar com" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Partilhar com link" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Proteger com palavra-passe" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Palavra chave" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Enviar o link por e-mail" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Enviar" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Especificar data de expiração" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Data de expiração" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Partilhar via email:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Não foi encontrado ninguém" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Não é permitido partilhar de novo" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Partilhado em {item} com {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Deixar de partilhar" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "pode editar" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "Controlo de acesso" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "criar" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "actualizar" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "apagar" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "partilhar" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Protegido com palavra-passe" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Erro ao retirar a data de expiração" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Erro ao aplicar a data de expiração" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "A Enviar..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" -msgstr "E-mail enviado com sucesso!" +msgstr "E-mail enviado" + +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "A actualização falhou. Por favor reporte este incidente seguindo este link <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "A actualização foi concluÃda com sucesso. Vai ser redireccionado para o ownCloud agora." #: lostpassword/controller.php:47 msgid "ownCloud password reset" @@ -331,7 +428,7 @@ msgstr "A sua password foi reposta" #: lostpassword/templates/resetpassword.php:5 msgid "To login page" -msgstr "Para a página de conexão" +msgstr "Para a página de entrada" #: lostpassword/templates/resetpassword.php:8 msgid "New password" @@ -441,93 +538,17 @@ msgstr "Tablespace da base de dados" #: templates/installation.php:129 msgid "Database host" -msgstr "Host da base de dados" +msgstr "Anfitrião da base de dados" #: templates/installation.php:134 msgid "Finish setup" msgstr "Acabar instalação" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Domingo" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Segunda" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Terça" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Quarta" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Quinta" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Sexta" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Sábado" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Janeiro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Fevereiro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Março" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Abril" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Maio" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Junho" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Julho" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Agosto" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Setembro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Outubro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Novembro" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Dezembro" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "serviços web sob o seu controlo" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Sair" @@ -547,7 +568,7 @@ msgstr "Por favor mude a sua palavra-passe para assegurar a sua conta de novo." #: templates/login.php:19 msgid "Lost your password?" -msgstr "Esqueceu a sua password?" +msgstr "Esqueceu-se da sua password?" #: templates/login.php:39 msgid "remember" @@ -568,4 +589,4 @@ msgstr "seguinte" #: templates/update.php:3 #, php-format msgid "Updating ownCloud to version %s, this may take a while." -msgstr "A Actualizar o ownCloud para a versão %s, esta operação pode demorar." +msgstr "A actualizar o ownCloud para a versão %s, esta operação pode demorar." diff --git a/l10n/pt_PT/files.po b/l10n/pt_PT/files.po index 1ba8520b85c..0ffd2591560 100644 --- a/l10n/pt_PT/files.po +++ b/l10n/pt_PT/files.po @@ -5,17 +5,19 @@ # Translators: # <daniel@mouxy.net>, 2012-2013. # Daniel Pinto <daniel@mouxy.net>, 2013. +# <duartegrilo@gmail.com>, 2013. # Duarte Velez Grilo <duartegrilo@gmail.com>, 2012. # <geral@ricardolameiro.pt>, 2012. # Helder Meneses <helder.meneses@gmail.com>, 2012. +# Miguel Sousa <migueljorgesousa@sapo.pt>, 2013. # <rjgpp.1994@gmail.com>, 2012. 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 12:23+0000\n" -"Last-Translator: Mouxy <daniel@mouxy.net>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -23,65 +25,46 @@ msgstr "" "Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Enviar" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Não foi possÃvel move o ficheiro %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Não foi possÃvel renomear o ficheiro" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Nenhum ficheiro foi carregado. Erro desconhecido" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Sem erro, ficheiro enviado com sucesso" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "O ficheiro enviado excede o limite permitido na directiva do php.ini upload_max_filesize" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "O ficheiro enviado excede o diretivo MAX_FILE_SIZE especificado no formulário HTML" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "O ficheiro enviado só foi enviado parcialmente" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Não foi enviado nenhum ficheiro" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Falta uma pasta temporária" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Falhou a escrita no disco" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Espaço em disco insuficiente!" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Directório Inválido" @@ -89,151 +72,151 @@ msgstr "Directório Inválido" msgid "Files" msgstr "Ficheiros" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Deixar de partilhar" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Apagar" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Renomear" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "O nome {new_name} já existe" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "substituir" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" -msgstr "Sugira um nome" +msgstr "sugira um nome" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "{new_name} substituido" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "desfazer" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "substituido {new_name} por {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "{files} não partilhado(s)" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "{files} eliminado(s)" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' não é um nome de ficheiro válido!" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "O nome do ficheiro não pode estar vazio." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Nome Inválido, os caracteres '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' não são permitidos." -#: js/files.js:204 +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "O seu armazenamento está cheio, os ficheiros não podem ser sincronizados." + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "O seu espaço de armazenamento está quase cheiro ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "O seu download está a ser preparado. Este processo pode demorar algum tempo se os ficheiros forem grandes." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Não é possÃvel fazer o envio do ficheiro devido a ser uma pasta ou ter 0 bytes" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Erro no envio" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Fechar" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Pendente" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "A enviar 1 ficheiro" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "A carregar {count} ficheiros" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." -msgstr "O envio foi cancelado." +msgstr "Envio cancelado." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "O URL não pode estar vazio." -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "{count} ficheiros analisados" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "erro ao analisar" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nome" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Tamanho" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Modificado" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 pasta" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} pastas" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 ficheiro" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} ficheiros" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Enviar" + #: templates/admin.php:5 msgid "File handling" msgstr "Manuseamento de ficheiros" @@ -282,32 +265,40 @@ msgstr "Pasta" msgid "From link" msgstr "Da ligação" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Cancelar envio" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Vazio. Envie alguma coisa!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Transferir" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Envio muito grande" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Os ficheiros que está a tentar enviar excedem o tamanho máximo de envio permitido neste servidor." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Os ficheiros estão a ser analisados, por favor aguarde." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Análise actual" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "Atualizar cache do sistema de ficheiros..." diff --git a/l10n/pt_PT/files_encryption.po b/l10n/pt_PT/files_encryption.po index 08eeb3d7e75..0ae4844da6f 100644 --- a/l10n/pt_PT/files_encryption.po +++ b/l10n/pt_PT/files_encryption.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Daniel Pinto <daniel@mouxy.net>, 2013. # Duarte Velez Grilo <duartegrilo@gmail.com>, 2012. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-24 00:06+0100\n" +"PO-Revision-Date: 2013-01-23 01:09+0000\n" +"Last-Translator: Mouxy <daniel@mouxy.net>\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" @@ -22,53 +23,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "Alterado para encriptação do lado do cliente" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +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 "" +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 "" +msgstr "Não foi possÃvel alterar a password de encriptação de ficheiros para a sua password de login" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Escolha o método de encriptação" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Encriptação do lado do cliente (mais seguro mas torna possÃvel o acesso aos dados através do interface web)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Encriptação do lado do servidor (permite o acesso aos seus ficheiros através do interface web e do cliente de sincronização)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Nenhuma (sem encriptação)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Importante: Uma vez escolhido o modo de encriptação, não existe maneira de o alterar!" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "Escolhido pelo utilizador" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/pt_PT/files_trashbin.po b/l10n/pt_PT/files_trashbin.po new file mode 100644 index 00000000000..150827a263a --- /dev/null +++ b/l10n/pt_PT/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/pt_PT/settings.po b/l10n/pt_PT/settings.po index 3d663773c5f..3849efff6e7 100644 --- a/l10n/pt_PT/settings.po +++ b/l10n/pt_PT/settings.po @@ -4,17 +4,19 @@ # # Translators: # <daniel@mouxy.net>, 2012. +# <duartegrilo@gmail.com>, 2013. # Duarte Velez Grilo <duartegrilo@gmail.com>, 2012-2013. # <geral@ricardolameiro.pt>, 2012. # Helder Meneses <helder.meneses@gmail.com>, 2012. +# Miguel Sousa <migueljorgesousa@sapo.pt>, 2013. # <rjgpp.1994@gmail.com>, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 01:00+0000\n" +"Last-Translator: Miguel Sousa <migueljorgesousa@sapo.pt>\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" @@ -92,7 +94,7 @@ msgstr "Activar" msgid "Saving..." msgstr "A guardar..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__language_name__" @@ -104,15 +106,15 @@ msgstr "Adicione a sua aplicação" msgid "More Apps" msgstr "Mais Aplicações" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Selecione uma aplicação" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Ver a página da aplicação em apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licenciado por <span class=\"author\"></span>" @@ -161,7 +163,7 @@ msgstr "Transferir o cliente android" msgid "Download iOS Client" msgstr "Transferir o cliente iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Palavra-chave" @@ -231,11 +233,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Desenvolvido pela <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunidade ownCloud</a>, o<a href=\"https://github.com/owncloud\" target=\"_blank\">código fonte</a> está licenciado sob a <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nome" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "Nome de utilizador" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupos" @@ -247,26 +249,38 @@ msgstr "Criar" msgid "Default Storage" msgstr "Armazenamento Padrão" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Ilimitado" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Outro" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "Nome público" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Grupo Administrador" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Armazenamento" -#: templates/users.php:133 +#: templates/users.php:97 +msgid "change display name" +msgstr "modificar nome exibido" + +#: templates/users.php:101 +msgid "set new password" +msgstr "definir nova palavra-passe" + +#: templates/users.php:137 msgid "Default" msgstr "Padrão" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Apagar" diff --git a/l10n/ro/core.po b/l10n/ro/core.po index b4fb56151ad..6d283624614 100644 --- a/l10n/ro/core.po +++ b/l10n/ro/core.po @@ -5,6 +5,7 @@ # Translators: # Claudiu <claudiu@tanaselia.ro>, 2011, 2012. # Dimon Pockemon <>, 2012. +# Dumitru Ursu <>, 2013. # Eugen Mihalache <eugemjj@gmail.com>, 2012. # <g.ciprian@osn.ro>, 2012. # <laur.cristescu@gmail.com>, 2012. @@ -12,8 +13,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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -22,29 +23,29 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" -msgstr "" +msgstr "Utilizatorul %s a partajat un fiÈ™ier cu tine" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" -msgstr "" +msgstr "Utilizatorul %s a partajat un dosar cu tine" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" -msgstr "" +msgstr "Utilizatorul %s a partajat fiÈ™ierul \"%s\" cu tine. ÃŽl poÈ›i descărca de aici: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " "here: %s" -msgstr "" +msgstr "Utilizatorul %s a partajat dosarul \"%s\" cu tine. ÃŽl poÈ›i descărca de aici: %s " #: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 msgid "Category type not provided." @@ -68,12 +69,12 @@ msgstr "Tipul obiectului nu este prevazut" #: ajax/vcategories/removeFromFavorites.php:30 #, php-format msgid "%s ID not provided." -msgstr "" +msgstr "ID-ul %s nu a fost introdus" #: ajax/vcategories/addToFavorites.php:35 #, php-format msgid "Error adding %s to favorites." -msgstr "" +msgstr "Eroare la adăugarea %s la favorite" #: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 msgid "No categories selected for deletion." @@ -82,61 +83,137 @@ msgstr "Nici o categorie selectată pentru È™tergere." #: ajax/vcategories/removeFromFavorites.php:35 #, php-format msgid "Error removing %s from favorites." -msgstr "" +msgstr "Eroare la È™tergerea %s din favorite" + +#: js/config.php:32 +msgid "Sunday" +msgstr "Duminică" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Monday" +msgstr "Luni" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "MarÈ›i" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Miercuri" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Joi" + +#: js/config.php:32 +msgid "Friday" +msgstr "Vineri" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Sâmbătă" + +#: js/config.php:33 +msgid "January" +msgstr "Ianuarie" + +#: js/config.php:33 +msgid "February" +msgstr "Februarie" + +#: js/config.php:33 +msgid "March" +msgstr "Martie" + +#: js/config.php:33 +msgid "April" +msgstr "Aprilie" + +#: js/config.php:33 +msgid "May" +msgstr "Mai" + +#: js/config.php:33 +msgid "June" +msgstr "Iunie" + +#: js/config.php:33 +msgid "July" +msgstr "Iulie" + +#: js/config.php:33 +msgid "August" +msgstr "August" + +#: js/config.php:33 +msgid "September" +msgstr "Septembrie" + +#: js/config.php:33 +msgid "October" +msgstr "Octombrie" + +#: js/config.php:33 +msgid "November" +msgstr "Noiembrie" + +#: js/config.php:33 +msgid "December" +msgstr "Decembrie" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Configurări" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "secunde în urmă" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 minut în urmă" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} minute in urma" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "Acum o ora" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" -msgstr "" +msgstr "{hours} ore în urmă" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "astăzi" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "ieri" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} zile in urma" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "ultima lună" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" -msgstr "" +msgstr "{months} luni în urmă" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "luni în urmă" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "ultimul an" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "ani în urmă" @@ -163,136 +240,155 @@ msgstr "Ok" #: 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 "" +msgstr "Tipul obiectului nu a fost specificat" #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Eroare" #: js/oc-vcategories.js:179 msgid "The app name is not specified." -msgstr "" +msgstr "Numele aplicaÈ›iei nu a fost specificat" #: js/oc-vcategories.js:194 msgid "The required file {file} is not installed!" +msgstr "FiÈ™ierul obligatoriu {file} nu este instalat!" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Partajează" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Shared" msgstr "" -#: js/share.js:124 js/share.js:594 +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Eroare la partajare" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Eroare la anularea partajării" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Eroare la modificarea permisiunilor" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Distribuie cu tine si grupul {group} de {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Distribuie cu tine de {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Partajat cu" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Partajare cu legătură" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Protejare cu parolă" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Parola" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" -msgstr "" +msgstr "Expediază legătura prin poÈ™ta electronică" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" -msgstr "" +msgstr "Expediază" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Specifică data expirării" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Data expirării" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Distribuie prin email:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Nici o persoană găsită" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Repartajarea nu este permisă" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Distribuie in {item} si {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Anulare partajare" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "poate edita" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "control acces" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "creare" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "actualizare" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "È™tergere" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "partajare" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Protejare cu parolă" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Eroare la anularea datei de expirare" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Eroare la specificarea datei de expirare" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." -msgstr "" +msgstr "Se expediază..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" +msgstr "Mesajul a fost expediat" + +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "" + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." msgstr "" #: lostpassword/controller.php:47 @@ -446,87 +542,11 @@ msgstr "Bază date" msgid "Finish setup" msgstr "Finalizează instalarea" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Duminică" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Luni" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "MarÈ›i" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Miercuri" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Joi" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Vineri" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Sâmbătă" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Ianuarie" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Februarie" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Martie" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Aprilie" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Mai" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Iunie" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Iulie" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "August" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Septembrie" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Octombrie" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Noiembrie" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Decembrie" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "servicii web controlate de tine" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "IeÈ™ire" @@ -567,4 +587,4 @@ msgstr "următorul" #: templates/update.php:3 #, php-format msgid "Updating ownCloud to version %s, this may take a while." -msgstr "" +msgstr "Actualizăm ownCloud la versiunea %s, aceasta poate dura câteva momente." diff --git a/l10n/ro/files.po b/l10n/ro/files.po index 113c4ac8b1f..a199844446c 100644 --- a/l10n/ro/files.po +++ b/l10n/ro/files.po @@ -5,6 +5,7 @@ # Translators: # Claudiu <claudiu@tanaselia.ro>, 2011-2013. # Dimon Pockemon <>, 2012. +# Dumitru Ursu <>, 2013. # Eugen Mihalache <eugemjj@gmail.com>, 2012. # <g.ciprian@osn.ro>, 2012-2013. # <laur.cristescu@gmail.com>, 2012. @@ -12,8 +13,8 @@ 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 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -22,65 +23,46 @@ 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:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "ÃŽncarcă" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "Nu s-a putut muta %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Nu s-a putut redenumi fiÈ™ierul" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Nici un fiÈ™ier nu a fost încărcat. Eroare necunoscută" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Nicio eroare, fiÈ™ierul a fost încărcat cu succes" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Fisierul incarcat depaseste upload_max_filesize permisi in php.ini: " -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "FiÈ™ierul are o dimensiune mai mare decât variabile MAX_FILE_SIZE specificată în formularul HTML" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "FiÈ™ierul a fost încărcat doar parÈ›ial" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Niciun fiÈ™ier încărcat" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "LipseÈ™te un dosar temporar" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Eroare la scriere pe disc" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Nu este suficient spaÈ›iu disponibil" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Director invalid." @@ -88,151 +70,151 @@ msgstr "Director invalid." msgid "Files" msgstr "FiÈ™iere" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Anulează partajarea" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Șterge" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Redenumire" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} deja exista" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "înlocuire" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "sugerează nume" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "anulare" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "inlocuit {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "Anulează ultima acÈ›iune" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} inlocuit cu {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "nedistribuit {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "Sterse {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' este un nume invalid de fiÈ™ier." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Numele fiÈ™ierului nu poate rămâne gol." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Nume invalid, '\\', '/', '<', '>', ':', '\"', '|', '?' si '*' nu sunt permise." -#: js/files.js:204 +#: 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 "" +msgstr "Se pregăteÈ™te descărcarea. Aceasta poate să dureze ceva timp dacă fiÈ™ierele sunt mari." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Nu s-a putut încărca fiÈ™ierul tău deoarece pare să fie un director sau are 0 bytes." -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Eroare la încărcare" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "ÃŽnchide" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "ÃŽn aÈ™teptare" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "un fiÈ™ier se încarcă" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} fisiere incarcate" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "ÃŽncărcare anulată." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "Adresa URL nu poate fi goală." -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "{count} fisiere scanate" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "eroare la scanarea" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Nume" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Dimensiune" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Modificat" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 folder" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} foldare" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 fisier" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} fisiere" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "ÃŽncarcă" + #: templates/admin.php:5 msgid "File handling" msgstr "Manipulare fiÈ™iere" @@ -281,32 +263,40 @@ msgstr "Dosar" msgid "From link" msgstr "de la adresa" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Anulează încărcarea" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Nimic aici. ÃŽncarcă ceva!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Descarcă" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "FiÈ™ierul încărcat este prea mare" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "FiÈ™ierul care l-ai încărcat a depășită limita maximă admisă la încărcare pe acest server." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "FiÈ™ierele sunt scanate, te rog aÈ™teptă." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "ÃŽn curs de scanare" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/ro/files_encryption.po b/l10n/ro/files_encryption.po index 701aea30fb9..504f72e85c4 100644 --- a/l10n/ro/files_encryption.po +++ b/l10n/ro/files_encryption.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Dumitru Ursu <>, 2013. # <g.ciprian@osn.ro>, 2012. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-27 00:04+0100\n" +"PO-Revision-Date: 2013-01-26 00:05+0000\n" +"Last-Translator: Dimon Pockemon <>\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" @@ -22,53 +23,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "setat la encriptare locală" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +msgstr "Schimbă parola de ecriptare în parolă de acces" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +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 "" +msgstr "Nu s-a putut schimba parola de encripÈ›ie a fiÈ™ierelor ca parolă de acces" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Alege tipul de ecripÈ›ie" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "EncripÈ›ie locală (cea mai sigură, dar face ca datele să nu mai fie accesibile din interfaÈ›a web)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "EncripÈ›ie pe server (permite să accesezi datele tale din interfaÈ›a web È™i din clientul pentru calculator)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Fără (nici un fel de ecriptare)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Important: Din moment ce ai setat un mod de encriptare, nu mai există metode de a-l schimba înapoi" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "Spefic fiecărui utilizator (lasă utilizatorul să decidă)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/ro/files_external.po b/l10n/ro/files_external.po index a2cf379cc42..fd43a0fd65b 100644 --- a/l10n/ro/files_external.po +++ b/l10n/ro/files_external.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Dumitru Ursu <>, 2013. # <g.ciprian@osn.ro>, 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-27 00:04+0100\n" +"PO-Revision-Date: 2013-01-25 23:25+0000\n" +"Last-Translator: Dimon Pockemon <>\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,40 +21,40 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 msgid "Access granted" -msgstr "" +msgstr "Acces permis" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" -msgstr "" +msgstr "Eroare la configurarea mediului de stocare Dropbox" #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" -msgstr "" +msgstr "Permite accesul" #: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" -msgstr "" +msgstr "Completează toate câmpurile necesare" #: js/dropbox.js:85 msgid "Please provide a valid Dropbox app key and secret." -msgstr "" +msgstr "Prezintă te rog o cheie de Dropbox validă È™i parola" #: js/google.js:26 js/google.js:73 js/google.js:78 msgid "Error configuring Google Drive storage" -msgstr "" +msgstr "Eroare la configurarea mediului de stocare Google Drive" #: lib/config.php:434 msgid "" "<b>Warning:</b> \"smbclient\" is not installed. Mounting of CIFS/SMB shares " "is not possible. Please ask your system administrator to install it." -msgstr "" +msgstr "<b>AtenÈ›ie:</b> \"smbclient\" nu este instalat. Montarea mediilor CIFS/SMB partajate nu este posibilă. Solicită administratorului sistemului tău să îl instaleaze." #: lib/config.php:435 msgid "" "<b>Warning:</b> 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 "<b>AtenÈ›ie:</b> suportul pentru FTP în PHP nu este activat sau instalat. Montarea mediilor FPT partajate nu este posibilă. Solicită administratorului sistemului tău să îl instaleze." #: templates/settings.php:3 msgid "External Storage" @@ -100,7 +101,7 @@ msgid "Users" msgstr "Utilizatori" #: 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 "Șterge" @@ -112,10 +113,10 @@ msgstr "Permite stocare externă pentru utilizatori" msgid "Allow users to mount their own external storage" msgstr "Permite utilizatorilor să monteze stocare externă proprie" -#: templates/settings.php:139 +#: templates/settings.php:136 msgid "SSL root certificates" msgstr "Certificate SSL root" -#: templates/settings.php:158 +#: templates/settings.php:153 msgid "Import Root Certificate" msgstr "Importă certificat root" diff --git a/l10n/ro/files_trashbin.po b/l10n/ro/files_trashbin.po new file mode 100644 index 00000000000..68e72348ff6 --- /dev/null +++ b/l10n/ro/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/ro/lib.po b/l10n/ro/lib.po index cbfb8c3bfd4..a48eb334748 100644 --- a/l10n/ro/lib.po +++ b/l10n/ro/lib.po @@ -3,15 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Dumitru Ursu <>, 2013. # <g.ciprian@osn.ro>, 2012. # <laur.cristescu@gmail.com>, 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" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" "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" @@ -59,9 +60,9 @@ msgstr "ÃŽnapoi la fiÈ™iere" 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:228 +#: helper.php:229 msgid "couldn't be determined" -msgstr "" +msgstr "nu poate fi determinat" #: json.php:28 msgid "Application is not enabled" diff --git a/l10n/ro/settings.po b/l10n/ro/settings.po index 280c113895e..e69c97841ff 100644 --- a/l10n/ro/settings.po +++ b/l10n/ro/settings.po @@ -5,6 +5,7 @@ # Translators: # Claudiu <claudiu@tanaselia.ro>, 2011, 2012. # Dimon Pockemon <>, 2012. +# Dumitru Ursu <>, 2013. # Eugen Mihalache <eugemjj@gmail.com>, 2012. # <g.ciprian@osn.ro>, 2012-2013. # <icewind1991@gmail.com>, 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -69,7 +70,7 @@ msgstr "Cerere eronată" #: ajax/togglegroups.php:12 msgid "Admins can't remove themself from the admin group" -msgstr "" +msgstr "Administratorii nu se pot È™terge singuri din grupul admin" #: ajax/togglegroups.php:28 #, php-format @@ -93,7 +94,7 @@ msgstr "ActivaÈ›i" msgid "Saving..." msgstr "Salvez..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "_language_name_" @@ -105,15 +106,15 @@ msgstr "Adaugă aplicaÈ›ia ta" msgid "More Apps" msgstr "Mai multe aplicaÈ›ii" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Selectează o aplicaÈ›ie" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Vizualizează pagina applicaÈ›iei pe apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licenÈ›iat <span class=\"author\"></span>" @@ -144,7 +145,7 @@ msgstr "Suport comercial" #: templates/personal.php:8 #, php-format msgid "You have used <strong>%s</strong> of the available <strong>%s</strong>" -msgstr "" +msgstr "AÈ›i utilizat <strong>%s</strong> din <strong>%s</strong> disponibile" #: templates/personal.php:12 msgid "Clients" @@ -162,7 +163,7 @@ msgstr "Descarcă client Android" msgid "Download iOS Client" msgstr "Descarcă client iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Parolă" @@ -216,7 +217,7 @@ msgstr "WebDAV" #: templates/personal.php:54 msgid "Use this address to connect to your ownCloud in your file manager" -msgstr "" +msgstr "FoloseÈ™te această adresă pentru a conecta ownCloud cu managerul de fiÈ™iere" #: templates/personal.php:63 msgid "Version" @@ -232,11 +233,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Dezvoltat de the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunitatea ownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">codul sursă</a> este licenÈ›iat sub <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Nume" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupuri" @@ -248,26 +249,38 @@ msgstr "Crează" msgid "Default Storage" msgstr "Stocare implicită" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Nelimitată" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Altele" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Grupul Admin " -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Stocare" -#: templates/users.php:133 +#: 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 "Implicită" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Șterge" diff --git a/l10n/ro/user_ldap.po b/l10n/ro/user_ldap.po index 41e4eebb9f3..a57e18531e1 100644 --- a/l10n/ro/user_ldap.po +++ b/l10n/ro/user_ldap.po @@ -3,16 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Dumitru Ursu <>, 2012. +# Dumitru Ursu <>, 2012-2013. # <iuranemo@gmail.com>, 2012. # <laur.cristescu@gmail.com>, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-16 00:19+0100\n" -"PO-Revision-Date: 2013-01-15 23:19+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-26 00:09+0100\n" +"PO-Revision-Date: 2013-01-25 23:02+0000\n" +"Last-Translator: Dimon Pockemon <>\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" @@ -31,7 +31,7 @@ msgstr "<b>Atentie:</b> Apps user_ldap si user_webdavauth sunt incompatibile. Es msgid "" "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not " "work. Please ask your system administrator to install it." -msgstr "" +msgstr "<b>AtenÈ›ie</b> Modulul PHP LDAP nu este instalat, infrastructura nu va funcÈ›iona. Contactează administratorul sistemului pentru al instala." #: templates/settings.php:15 msgid "Host" @@ -48,7 +48,7 @@ msgstr "DN de bază" #: templates/settings.php:16 msgid "One Base DN per line" -msgstr "" +msgstr "Un Base DN pe linie" #: templates/settings.php:16 msgid "You can specify Base DN for users and groups in the Advanced tab" @@ -123,7 +123,7 @@ msgstr "Arborele de bază al Utilizatorilor" #: templates/settings.php:25 msgid "One User Base DN per line" -msgstr "" +msgstr "Un User Base DN pe linie" #: templates/settings.php:26 msgid "Base Group Tree" @@ -131,7 +131,7 @@ msgstr "Arborele de bază al Grupurilor" #: templates/settings.php:26 msgid "One Group Base DN per line" -msgstr "" +msgstr "Un Group Base DN pe linie" #: templates/settings.php:27 msgid "Group-Member association" diff --git a/l10n/ro/user_webdavauth.po b/l10n/ro/user_webdavauth.po index fdbba4b6f80..1f11c76068b 100644 --- a/l10n/ro/user_webdavauth.po +++ b/l10n/ro/user_webdavauth.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Dumitru Ursu <>, 2013. # <laur.cristescu@gmail.com>, 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-27 00:04+0100\n" +"PO-Revision-Date: 2013-01-26 00:09+0000\n" +"Last-Translator: Dimon Pockemon <>\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,7 +21,7 @@ msgstr "" #: templates/settings.php:3 msgid "WebDAV Authentication" -msgstr "" +msgstr "Autentificare WebDAV" #: templates/settings.php:4 msgid "URL: http://" @@ -31,4 +32,4 @@ 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 va trimite datele de autentificare la acest URL. Acest modul verifică răspunsul È™i va interpreta codurile de status HTTP 401 sau 403 ca fiind date de autentificare invalide, È™i orice alt răspuns ca fiind date valide." diff --git a/l10n/ru/core.po b/l10n/ru/core.po index 2bbb44f36f8..6f8d26bc80e 100644 --- a/l10n/ru/core.po +++ b/l10n/ru/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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" @@ -27,24 +27,24 @@ 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/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "Пользователь %s поделилÑÑ Ñ Ð²Ð°Ð¼Ð¸ файлом" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "Пользователь %s открыл вам доÑтуп к папке" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "Пользователь %s открыл вам доÑтуп к файлу \"%s\". Он доÑтупен Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ здеÑÑŒ: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -89,59 +89,135 @@ msgstr "Ðет категорий Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ." msgid "Error removing %s from favorites." msgstr "Ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ %s из избранного" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "ÐаÑтройки" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "неÑколько Ñекунд назад" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 минуту назад" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} минут назад" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "Ñ‡Ð°Ñ Ð½Ð°Ð·Ð°Ð´" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} чаÑов назад" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "ÑегоднÑ" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "вчера" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} дней назад" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "в прошлом меÑÑце" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} меÑÑцев назад" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "неÑколько меÑÑцев назад" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "в прошлом году" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "неÑколько лет назад" @@ -171,8 +247,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Ошибка" @@ -184,122 +260,141 @@ msgstr "Ð˜Ð¼Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ указано" msgid "The required file {file} is not installed!" msgstr "Ðеобходимый файл {file} не уÑтановлен!" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Ошибка при закрытии доÑтупа" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Ошибка при Ñмене разрешений" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "{owner} открыл доÑтуп Ð´Ð»Ñ Ð’Ð°Ñ Ð¸ группы {group} " -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "{owner} открыл доÑтуп Ð´Ð»Ñ Ð’Ð°Ñ" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "ПоделитьÑÑ Ñ" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "ПоделитьÑÑ Ñ ÑÑылкой" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Защитить паролем" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Пароль" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "ÐŸÐ¾Ñ‡Ñ‚Ð¾Ð²Ð°Ñ ÑÑылка на перÑону" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Отправить" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "УÑтановить Ñрок доÑтупа" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Дата окончаниÑ" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "ПоделитÑÑ Ñ‡ÐµÑ€ÐµÐ· Ñлектронную почту:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Ðи один человек не найден" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Общий доÑтуп не разрешен" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Общий доÑтуп к {item} Ñ {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Закрыть общий доÑтуп" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "может редактировать" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "контроль доÑтупа" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "Ñоздать" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "обновить" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "удалить" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "открыть доÑтуп" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Защищено паролем" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Ошибка при отмене Ñрока доÑтупа" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Ошибка при уÑтановке Ñрока доÑтупа" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "ОтправлÑетÑÑ ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "ПиÑьмо отправлено" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ " @@ -451,87 +546,11 @@ msgstr "ХоÑÑ‚ базы данных" msgid "Finish setup" msgstr "Завершить уÑтановку" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "ВоÑкреÑенье" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Понедельник" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Вторник" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Среда" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Четверг" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "ПÑтница" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Суббота" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Январь" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Февраль" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Март" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Ðпрель" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Май" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Июнь" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Июль" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "ÐвгуÑÑ‚" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "СентÑбрь" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "ОктÑбрь" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "ÐоÑбрь" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Декабрь" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "Сетевые Ñлужбы под твоим контролем" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Выйти" diff --git a/l10n/ru/files.po b/l10n/ru/files.po index 7e8d79834dc..ce99f9649d2 100644 --- a/l10n/ru/files.po +++ b/l10n/ru/files.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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" @@ -28,65 +28,46 @@ 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:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Загрузить" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "Ðевозможно перемеÑтить %s - файл Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "Ðевозможно перемеÑтить %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Ðевозможно переименовать файл" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Файл не был загружен. ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Файл уÑпешно загружен" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Файл превышает размер уÑтановленный upload_max_filesize в php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Файл превышает размер MAX_FILE_SIZE, указаный в HTML-форме" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Файл был загружен не полноÑтью" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Файл не был загружен" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Ðевозможно найти временную папку" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Ошибка запиÑи на диÑк" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "ÐедоÑтаточно Ñвободного меÑта" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Ðеправильный каталог." @@ -94,151 +75,151 @@ msgstr "Ðеправильный каталог." msgid "Files" msgstr "Файлы" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Отменить публикацию" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Удалить" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Переименовать" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} уже ÑущеÑтвует" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "заменить" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "предложить название" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "отмена" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "заменено {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "отмена" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "заменено {new_name} на {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "не опубликованные {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "удаленные {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' - неправильное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° не может быть пуÑтым." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Ðеправильное имÑ, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' недопуÑтимы." -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Ðе удаетÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ файл размером 0 байт в каталог" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Ошибка загрузки" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Закрыть" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Ожидание" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "загружаетÑÑ 1 файл" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} файлов загружаетÑÑ" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Загрузка отменена." -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Файл в процеÑÑе загрузки. Покинув Ñтраницу вы прервёте загрузку." -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "СÑылка не может быть пуÑтой." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Ðеправильное Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°. Ð˜Ð¼Ñ 'Shared' зарезервировано." -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} файлов проÑканировано" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "ошибка во Ð²Ñ€ÐµÐ¼Ñ ÑанированиÑ" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Ðазвание" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Размер" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Изменён" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 папка" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} папок" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 файл" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} файлов" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Загрузить" + #: templates/admin.php:5 msgid "File handling" msgstr "Управление файлами" @@ -287,32 +268,40 @@ msgstr "Папка" msgid "From link" msgstr "Из ÑÑылки" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Отмена загрузки" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "ЗдеÑÑŒ ничего нет. Загрузите что-нибудь!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Скачать" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Файл Ñлишком большой" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Подождите, файлы ÑканируютÑÑ." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Текущее Ñканирование" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/ru/files_trashbin.po b/l10n/ru/files_trashbin.po new file mode 100644 index 00000000000..488b1f95b94 --- /dev/null +++ b/l10n/ru/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"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/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/ru/settings.po b/l10n/ru/settings.po index e3155d76a8a..9ae6bc4fa91 100644 --- a/l10n/ru/settings.po +++ b/l10n/ru/settings.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-01-13 00:08+0100\n" -"PO-Revision-Date: 2013-01-12 11:55+0000\n" -"Last-Translator: adol <sharov3@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -99,7 +99,7 @@ msgstr "Включить" msgid "Saving..." msgstr "Сохранение..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "РуÑÑкий " @@ -111,15 +111,15 @@ msgstr "Добавить приложение" msgid "More Apps" msgstr "Больше приложений" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Выберите приложение" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Смотрите Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð½Ð° apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span> лицензиÑ. Ðвтор <span class=\"author\"></span>" @@ -168,7 +168,7 @@ msgstr "Загрузка Android-приложениÑ" msgid "Download iOS Client" msgstr "Загрузка iOS-приложениÑ" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Пароль" @@ -238,11 +238,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "РазрабатываетÑÑ <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ÑообщеÑтвом ownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">иÑходный код</a> доÑтупен под лицензией <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "ИмÑ" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Группы" @@ -254,26 +254,38 @@ msgstr "Создать" msgid "Default Storage" msgstr "Хранилище по-умолчанию" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Ðеограниченно" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Другое" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Группа ÐдминиÑтраторы" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Хранилище" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Удалить" diff --git a/l10n/ru_RU/core.po b/l10n/ru_RU/core.po index 7ecd789d863..6618f278e14 100644 --- a/l10n/ru_RU/core.po +++ b/l10n/ru_RU/core.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <cdewqazxsqwe@gmail.com>, 2013. # <cdewqazxsqwe@gmail.com>, 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" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" @@ -18,24 +19,24 @@ 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/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "Пользователь %s открыл Вам доÑтуп к файлу" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "Пользователь %s открыл Вам доÑтуп к папке" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "Пользователь %s открыл Вам доÑтуп к файлу \"%s\". Он доÑтупен Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ здеÑÑŒ: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -80,59 +81,135 @@ msgstr "Ðет категорий, выбранных Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ." msgid "Error removing %s from favorites." msgstr "Ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ %s из избранного." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "ÐаÑтройки" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "Ñекунд назад" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr " 1 минуту назад" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{минуты} минут назад" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 Ñ‡Ð°Ñ Ð½Ð°Ð·Ð°Ð´" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{чаÑÑ‹} чаÑов назад" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "ÑегоднÑ" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "вчера" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{дни} дней назад" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "в прошлом меÑÑце" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{меÑÑцы} меÑÑцев назад" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "меÑÑц назад" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "в прошлом году" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "лет назад" @@ -162,8 +239,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Ошибка" @@ -175,122 +252,141 @@ msgstr "Ð˜Ð¼Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ указано." msgid "The required file {file} is not installed!" msgstr "Требуемый файл {файл} не уÑтановлен!" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Ошибка Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ доÑтупа" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Ошибка при изменении прав доÑтупа" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Опубликовано Ð´Ð»Ñ Ð’Ð°Ñ Ð¸ группы {группа} {ÑобÑтвенник}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Опубликовано Ð´Ð»Ñ Ð’Ð°Ñ {ÑобÑтвенник}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Сделать общим Ñ" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Опубликовать Ñ ÑÑылкой" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Защитить паролем" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Пароль" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "СÑылка на Ð°Ð´Ñ€ÐµÑ Ñлектронной почты" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Отправить" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "УÑтановить Ñрок дейÑтвиÑ" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Дата иÑÑ‚ÐµÑ‡ÐµÐ½Ð¸Ñ Ñрока дейÑтвиÑ" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Сделать общедоÑтупным поÑредÑтвом email:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Ðе найдено людей" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "РекурÑивный общий доÑтуп не разрешен" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "СовмеÑтное иÑпользование в {объект} Ñ {пользователь}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Отключить общий доÑтуп" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "возможно редактирование" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "контроль доÑтупа" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "Ñоздать" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "обновить" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "удалить" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "Ñделать общим" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Пароль защищен" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Ошибка при отключении даты иÑÑ‚ÐµÑ‡ÐµÐ½Ð¸Ñ Ñрока дейÑтвиÑ" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Ошибка при уÑтановке даты иÑÑ‚ÐµÑ‡ÐµÐ½Ð¸Ñ Ñрока дейÑтвиÑ" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Отправка ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "ПиÑьмо отправлено" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "Обновление прошло неудачно. ПожалуйÑта, Ñообщите об Ñтом результате в <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "Обновление прошло уÑпешно. Ðемедленное перенаправление Ð’Ð°Ñ Ð½Ð° ownCloud." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Переназначение паролÑ" @@ -442,87 +538,11 @@ msgstr "Сервер базы данных" msgid "Finish setup" msgstr "Завершение наÑтройки" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "ВоÑкреÑенье" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Понедельник" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Вторник" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Среда" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Четверг" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "ПÑтница" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Суббота" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Январь" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Февраль" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Март" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Ðпрель" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Май" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Июнь" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Июль" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "ÐвгуÑÑ‚" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "СентÑбрь" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "ОктÑбрь" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "ÐоÑбрь" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Декабрь" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "веб-ÑервиÑÑ‹ под Вашим контролем" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Выйти" @@ -563,4 +583,4 @@ msgstr "Ñледующий" #: templates/update.php:3 #, php-format msgid "Updating ownCloud to version %s, this may take a while." -msgstr "" +msgstr "Обновление ownCloud до верÑии %s, Ñто может занÑть некоторое времÑ." diff --git a/l10n/ru_RU/files.po b/l10n/ru_RU/files.po index 04fe3223ae2..5cffe8c9d8e 100644 --- a/l10n/ru_RU/files.po +++ b/l10n/ru_RU/files.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <cdewqazxsqwe@gmail.com>, 2013. # <cdewqazxsqwe@gmail.com>, 2012. # <skoptev@ukr.net>, 2012. 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 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" @@ -19,217 +20,198 @@ 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:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Загрузить " - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Файл не был загружен. ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Ошибка отÑутÑтвует, файл загружен уÑпешно." -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Размер загружаемого файла превышает upload_max_filesize директиву в php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Размер загруженного" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Загружаемый файл был загружен чаÑтично" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Файл не был загружен" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "ОтÑутÑтвует Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¿Ð°Ð¿ÐºÐ°" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Ðе удалоÑÑŒ запиÑать на диÑк" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" -msgstr "" +msgstr "Ðе доÑтаточно Ñвободного меÑта" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." -msgstr "" +msgstr "Ðеверный каталог." #: appinfo/app.php:10 msgid "Files" msgstr "Файлы" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Скрыть" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Удалить" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Переименовать" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{новое_имÑ} уже ÑущеÑтвует" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "отмена" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "подобрать название" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "отменить" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "заменено {новое_имÑ}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "отменить дейÑтвие" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "заменено {новое_имÑ} Ñ {Ñтарое_имÑ}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "CовмеÑтное иÑпользование прекращено {файлы}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "удалено {файлы}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." -msgstr "" +msgstr "'.' ÑвлÑетÑÑ Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¼ именем файла." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." -msgstr "" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° не может быть пуÑтым." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Ðекорректное имÑ, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' не допуÑтимы." -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Ðевозможно загрузить файл,\n так как он имеет нулевой размер или ÑвлÑетÑÑ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸ÐµÐ¹" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Ошибка загрузки" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Закрыть" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Ожидающий решениÑ" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "загрузка 1 файла" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{количеÑтво} загружено файлов" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Загрузка отменена" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "ПроцеÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ файла. ЕÑли покинуть Ñтраницу ÑейчаÑ, загрузка будет отменена." -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL не должен быть пуÑтым." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" -msgstr "" - -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{количеÑтво} файлов отÑканировано" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "ошибка при Ñканировании" +msgstr "Ðеверное Ð¸Ð¼Ñ Ð¿Ð°Ð¿ÐºÐ¸. ИÑпользование Ð½Ð°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ 'Опубликовано' зарезервировано Owncloud" -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "ИмÑ" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Размер" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Изменен" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 папка" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{количеÑтво} папок" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 файл" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{количеÑтво} файлов" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Загрузить " + #: templates/admin.php:5 msgid "File handling" msgstr "Работа Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸" @@ -278,32 +260,40 @@ msgstr "Папка" msgid "From link" msgstr "По ÑÑылке" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Отмена загрузки" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "ЗдеÑÑŒ ничего нет. Загрузите что-нибудь!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Загрузить" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Загрузка Ñлишком велика" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Файлы ÑканируютÑÑ, пожалуйÑта, подождите." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Текущее Ñканирование" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "Обновление кÑша файловой ÑиÑтемы... " diff --git a/l10n/ru_RU/files_encryption.po b/l10n/ru_RU/files_encryption.po index b27f0a2def2..2453fc2cb9d 100644 --- a/l10n/ru_RU/files_encryption.po +++ b/l10n/ru_RU/files_encryption.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <cdewqazxsqwe@gmail.com>, 2013. # <cdewqazxsqwe@gmail.com>, 2012. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 12:11+0000\n" +"Last-Translator: AnnaSch <cdewqazxsqwe@gmail.com>\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" @@ -22,11 +23,11 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +msgstr "ПожалуйÑта, переключитеÑÑŒ на ownCloud-клиент и измените Ваш пароль ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð°Ñ†Ð¸Ð¸." #: js/settings-personal.js:17 msgid "switched to client side encryption" -msgstr "" +msgstr "переключено на шифрование на клиентÑкой Ñтороне" #: js/settings-personal.js:21 msgid "Change encryption password to login password" @@ -34,7 +35,7 @@ msgstr "" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +msgstr "ПожалуйÑта, проверьте Ваш пароль и попробуйте Ñнова" #: js/settings-personal.js:25 msgid "Could not change your file encryption password to your login password" @@ -42,33 +43,33 @@ msgstr "" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Выберите ÑпоÑоб шифрованиÑ:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Шифрование на Ñтороне клиента (наиболее безопаÑно, но делает невозможным получение доÑтупа к Вашим данным по вÑб-интерфейÑу)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Шифрование на Ñтороне Ñервера (позволÑет Вам получить доÑтуп к Вашим файлам по вÑб-интерфейÑу и деÑктопному клиенту)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Ðет (шифрование полноÑтью отÑутÑтвует)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Важно: Ðевозможно будет изменить выбранный ÑпоÑоб шифрованиÑ" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "Специфика Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (позволено решить пользователю)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/ru_RU/files_trashbin.po b/l10n/ru_RU/files_trashbin.po new file mode 100644 index 00000000000..de62fb208ef --- /dev/null +++ b/l10n/ru_RU/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"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/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/ru_RU/lib.po b/l10n/ru_RU/lib.po index be65ac1f023..34e58324fbd 100644 --- a/l10n/ru_RU/lib.po +++ b/l10n/ru_RU/lib.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <cdewqazxsqwe@gmail.com>, 2013. # <cdewqazxsqwe@gmail.com>, 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" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-30 00:23+0100\n" +"PO-Revision-Date: 2013-01-29 10:41+0000\n" +"Last-Translator: AnnaSch <cdewqazxsqwe@gmail.com>\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" @@ -58,9 +59,9 @@ msgstr "Обратно к файлам" msgid "Selected files too large to generate zip file." msgstr "Выбранные файлы Ñлишком велики Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ zip-архива." -#: helper.php:228 +#: helper.php:229 msgid "couldn't be determined" -msgstr "" +msgstr "не может быть определено" #: json.php:28 msgid "Application is not enabled" diff --git a/l10n/ru_RU/settings.po b/l10n/ru_RU/settings.po index bf961ac7a00..518e0168171 100644 --- a/l10n/ru_RU/settings.po +++ b/l10n/ru_RU/settings.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <cdewqazxsqwe@gmail.com>, 2013. # <cdewqazxsqwe@gmail.com>, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 13:40+0000\n" +"Last-Translator: AnnaSch <cdewqazxsqwe@gmail.com>\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" @@ -88,7 +89,7 @@ msgstr "Включить" msgid "Saving..." msgstr "Сохранение" -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__Ñзык_имÑ__" @@ -100,15 +101,15 @@ msgstr "Добавить Ваше приложение" msgid "More Apps" msgstr "Больше приложений" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Выбрать приложение" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "ОбратитеÑÑŒ к Ñтранице приложений на apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" @@ -147,7 +148,7 @@ msgstr "Клиенты" #: templates/personal.php:13 msgid "Download Desktop Clients" -msgstr "" +msgstr "Загрузка деÑктопных клиентов" #: templates/personal.php:14 msgid "Download Android Client" @@ -157,7 +158,7 @@ msgstr "Загрузить клиент под Android " msgid "Download iOS Client" msgstr "Загрузить клиент под iOS " -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Пароль" @@ -227,11 +228,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Разработанный <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "ИмÑ" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Группы" @@ -241,28 +242,40 @@ msgstr "Создать" #: templates/users.php:35 msgid "Default Storage" -msgstr "" +msgstr "Хранилище по умолчанию" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" -msgstr "" +msgstr "Ðеограниченный" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Другой" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Группа Admin" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" +msgstr "Хранилище" + +#: templates/users.php:97 +msgid "change display name" msgstr "" -#: templates/users.php:133 +#: templates/users.php:101 +msgid "set new password" +msgstr "назначить новый пароль" + +#: templates/users.php:137 msgid "Default" -msgstr "" +msgstr "По умолчанию" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Удалить" diff --git a/l10n/ru_RU/user_ldap.po b/l10n/ru_RU/user_ldap.po index ef2d84ebcb1..cd5c6be4905 100644 --- a/l10n/ru_RU/user_ldap.po +++ b/l10n/ru_RU/user_ldap.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <cdewqazxsqwe@gmail.com>, 2013. # <cdewqazxsqwe@gmail.com>, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-16 00:19+0100\n" -"PO-Revision-Date: 2013-01-15 23:20+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-30 00:23+0100\n" +"PO-Revision-Date: 2013-01-29 10:56+0000\n" +"Last-Translator: AnnaSch <cdewqazxsqwe@gmail.com>\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" @@ -29,7 +30,7 @@ msgstr "<b>Предупреждение:</b> ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ user_ldap и u msgid "" "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not " "work. Please ask your system administrator to install it." -msgstr "" +msgstr "<b>Предупреждение:</b> Модуль PHP LDAP не уÑтановлен, бÑкÑнд не будет работать. ПожалуйÑта, обратитеÑÑŒ к Вашему ÑиÑтемному админиÑтратору, чтобы уÑтановить его." #: templates/settings.php:15 msgid "Host" @@ -46,7 +47,7 @@ msgstr "База DN" #: templates/settings.php:16 msgid "One Base DN per line" -msgstr "" +msgstr "Одно базовое DN на линию" #: templates/settings.php:16 msgid "You can specify Base DN for users and groups in the Advanced tab" @@ -121,7 +122,7 @@ msgstr "Базовое дерево пользователей" #: templates/settings.php:25 msgid "One User Base DN per line" -msgstr "" +msgstr "Одно пользовательÑкое базовое DN на линию" #: templates/settings.php:26 msgid "Base Group Tree" @@ -129,7 +130,7 @@ msgstr "Базовое дерево групп" #: templates/settings.php:26 msgid "One Group Base DN per line" -msgstr "" +msgstr "Одно групповое базовое DN на линию" #: templates/settings.php:27 msgid "Group-Member association" diff --git a/l10n/ru_RU/user_webdavauth.po b/l10n/ru_RU/user_webdavauth.po index a14bb9d28ed..48ae554ac04 100644 --- a/l10n/ru_RU/user_webdavauth.po +++ b/l10n/ru_RU/user_webdavauth.po @@ -3,15 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <cdewqazxsqwe@gmail.com>, 2013. # <cdewqazxsqwe@gmail.com>, 2012. # <skoptev@ukr.net>, 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 10:01+0000\n" +"Last-Translator: AnnaSch <cdewqazxsqwe@gmail.com>\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" @@ -21,7 +22,7 @@ msgstr "" #: templates/settings.php:3 msgid "WebDAV Authentication" -msgstr "" +msgstr "WebDAV аутентификациÑ" #: templates/settings.php:4 msgid "URL: http://" diff --git a/l10n/si_LK/core.po b/l10n/si_LK/core.po index e0b4be93b4d..c03125867c9 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -20,24 +20,24 @@ msgstr "" "Language: si_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -82,59 +82,135 @@ msgstr "මක෠දà·à¶¸à·“ම සඳහ෠ප්â€à¶»à·€à¶»à·Šà¶œà¶ºà¶±à·Š msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "à·ƒà·à¶šà·ƒà·”ම්" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "à¶à¶à·Šà¶´à¶»à¶ºà¶±à·Šà¶§ පෙර" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 මිනිà¶à·Šà¶à·”වකට පෙර" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "අද" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "ඊයේ" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "පෙර මà·à·ƒà¶ºà·š" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "මà·à·ƒ කීපයකට පෙර" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "පෙර අවුරුද්දේ" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "අවුරුදු කීපයකට පෙර" @@ -164,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "දà·à·‚යක්" @@ -177,122 +253,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "බෙදà·à¶œà¶±à·Šà¶±" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "යොමුවක් මඟින් බෙදà·à¶œà¶±à·Šà¶±" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "මුර පදයකින් ආරක්à·à·à¶šà¶»à¶±à·Šà¶±" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "මුර පදය " -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "කල් ඉකුà¶à·Š විමේ දිනය දමන්න" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "කල් ඉකුà¶à·Š විමේ දිනය" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "විද්â€à¶ºà·”à¶à·Š à¶à·à¶´à·‘à¶½ මඟින් බෙදà·à¶œà¶±à·Šà¶±: " -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "නොබෙදු" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "සංස්කරණය à¶šà·… à·„à·à¶š" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "à¶´à·Šâ€à¶»à·€à·šà· à¶´à·à¶½à¶±à¶º" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "සදන්න" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "යà·à·€à¶à·Šà¶šà·à¶½à·“à¶± කරන්න" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "මකන්න" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "බෙදà·à·„දà·à¶œà¶±à·Šà¶±" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "මුර පදයකින් ආරක්à·à·à¶šà¶» ඇà¶" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "කල් ඉකුà¶à·Š දිනය ඉවà¶à·Š කිරීමේ දà·à·‚යක්" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "කල් ඉකුà¶à·Š දිනය ස්ථà·à¶´à¶±à¶º කිරීමේ දà·à·‚යක්" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ownCloud මුරපදය à¶´à·Šâ€à¶»à¶à·Šâ€à¶ºà·à¶»à¶¸à·Šà¶· කරන්න" @@ -444,87 +539,11 @@ msgstr "දà¶à·Šà¶à¶œà¶¶à¶©à· සේවà·à¶¯à·à¶ºà¶šà¶ºà·" msgid "Finish setup" msgstr "ස්ථà·à¶´à¶±à¶º කිරීම අවසන් කරන්න" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "ඉරිදà·" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "සඳුදà·" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "අඟහරුවà·à¶¯à·" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "බදà·à¶¯à·" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "à¶¶à·Šâ€à¶»à·„ස්පà¶à·’න්දà·" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "සිකුරà·à¶¯à·" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "සෙනසුරà·à¶¯à·" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "ජනවà·à¶»à·’" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "පෙබරවà·à¶»à·’" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "මà·à¶»à·Šà¶à·”" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "à¶…à¶´à·Šâ€à¶»à·šà¶½à·Š" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "මà·à¶ºà·’" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "ජූනි" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "ජූලි" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "à¶…à¶œà·à·ƒà·Šà¶à·”" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "à·ƒà·à¶´à·Šà¶à·à¶¸à·Šà¶¶à¶»à·Š" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "ඔක්à¶à·à¶¶à¶»à·Š" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "නොවà·à¶¸à·Šà¶¶à¶»à·Š" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "දෙසà·à¶¸à·Šà¶¶à¶»à·Š" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "ඔබට à¶´à·à¶½à¶±à¶º à¶šà·… à·„à·à¶šà·’ වෙබ් සේවà·à·€à¶±à·Š" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "නික්මීම" diff --git a/l10n/si_LK/files.po b/l10n/si_LK/files.po index 570832cb837..51da12e3cb9 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -19,65 +19,46 @@ msgstr "" "Language: si_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "උඩුගචකිරීම" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "ගොනුවක් උඩුගචනොවුනි. නොහà·à¶³à·’නු දà·à·‚යක්" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "නිවà·à¶»à¶¯à·’ à·€ ගොනුව උඩුගචකෙරිනි" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "උඩුගචකළ ගොනුවේ විà·à·à¶½à¶à·Šà·€à¶º HTML à¶´à·à¶»à¶¸à¶ºà·š නියම à¶šà·… ඇà¶à·’ MAX_FILE_SIZE විà·à·à¶½à¶à·Šà·€à¶ºà¶§ වඩ෠වà·à¶©à·’ය" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "උඩුගචකළ ගොනුවේ කොටසක් පමණක් උඩුගචවිය" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "කිසිදු ගොනවක් උඩුගචනොවිනි" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "à¶à·à·€à¶šà·à¶½à·’à¶š ෆොල්ඩරයක් සොයà·à¶œà¶ නොහà·à¶š" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "à¶à·à¶§à·’ගචකිරීම à¶…à·ƒà·à¶»à·Šà¶®à¶šà¶ºà·’" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -85,151 +66,151 @@ msgstr "" msgid "Files" msgstr "ගොනු" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "නොබෙදු" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "මකන්න" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "à¶±à·à·€à¶ නම් කරන්න" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "à¶´à·Šâ€à¶»à¶à·’ස්ථà·à¶´à¶±à¶º කරන්න" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "නමක් යà·à¶¢à¶±à· කරන්න" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "à¶…à¶à·Š හරින්න" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "නිෂ්ප්â€à¶»à¶· කරන්න" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "උඩුගචකිරීමේ දà·à·à¶ºà¶šà·Š" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "වසන්න" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 ගොනුවක් උඩගචකෙරේ" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "උඩුගචකිරීම à¶…à¶à·Š හරින්න ලදී" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "උඩුගà¶à¶šà·’රීමක් සිදුවේ. පිටුව à·„à·à¶» යà·à¶¸à·™à¶±à·Š එය à¶±à·à·€à¶à·™à¶±à·” ඇà¶" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "යොමුව හිස් විය නොහà·à¶š" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "පරීක්ෂ෠කිරීමේදී දà·à·‚යක්" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "නම" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "à¶´à·Šâ€à¶»à¶¸à·à¶«à¶º" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "වෙනස් à¶šà·…" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 ෆොල්ඩරයක්" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 ගොනුවක්" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "උඩුගචකිරීම" + #: templates/admin.php:5 msgid "File handling" msgstr "ගොනු පරිහරණය" @@ -278,32 +259,40 @@ msgstr "à·†à·à¶½à·Šà¶©à¶»à¶º" msgid "From link" msgstr "යොමුවෙන්" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "උඩුගචකිරීම à¶…à¶à·Š හරින්න" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "මෙහි කිසිවක් නොමà·à¶. යමක් උඩුගචකරන්න" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "à¶¶à·à¶œà¶ කිරීම" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "උඩුගචකිරීම විà·à·à¶½ à·€à·à¶©à·’ය" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "ගොනු පරික්ෂ෠කෙරේ. මඳක් à¶»à·à¶³à·“ සිටින්න" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "වර්à¶à¶¸à·à¶± පරික්ෂà·à·€" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/si_LK/files_trashbin.po b/l10n/si_LK/files_trashbin.po new file mode 100644 index 00000000000..6b753770151 --- /dev/null +++ b/l10n/si_LK/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/si_LK/settings.po b/l10n/si_LK/settings.po index 7997041c93c..3baa171814c 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -90,7 +90,7 @@ msgstr "à¶šà·Šâ€à¶»à·’යà¶à·Šà¶¸à¶š කරන්න" msgid "Saving..." msgstr "සුරà·à¶šà·™à¶¸à·’න් à¶´à·€à¶à·“..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "" @@ -102,15 +102,15 @@ msgstr "යෙදුමක් à¶‘à¶šà·Š කිරීම" msgid "More Apps" msgstr "à¶à·€à¶à·Š යෙදුම්" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "යෙදුමක් à¶à·œà¶»à¶±à·Šà¶±" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -159,7 +159,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "මුරපදය" @@ -229,11 +229,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "නිපදන ලද්දේ <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud සමà·à¶¢à¶ºà·™à¶±à·Š</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">මුල් à¶šà·šà¶à¶º </a>ලයිසන්ස් à¶šà¶» ඇà¶à·Šà¶à·š <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> යටà¶à·š." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "à¶±à·à¶¸à¶º" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "සමූහය" @@ -245,26 +245,38 @@ msgstr "à¶à¶±à¶±à·Šà¶±" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "වෙනà¶à·Š" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "à¶šà·à¶«à·Šà¶© පරිපà·à¶½à¶š" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "මක෠දමනවà·" diff --git a/l10n/sk_SK/core.po b/l10n/sk_SK/core.po index e11a2eda0fe..8e64ab1aaff 100644 --- a/l10n/sk_SK/core.po +++ b/l10n/sk_SK/core.po @@ -4,6 +4,7 @@ # # Translators: # <intense.feel@gmail.com>, 2011, 2012. +# Marián Hvolka <marian.hvolka@stuba.sk>, 2013. # <martin.babik@gmail.com>, 2012. # <mehturt@gmail.com>, 2013. # Roman Priesol <roman@priesol.net>, 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-16 00:19+0100\n" -"PO-Revision-Date: 2013-01-15 15:24+0000\n" -"Last-Translator: mehturt <mehturt@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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,24 +23,24 @@ msgstr "" "Language: sk_SK\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "PoužÃvateľ %s zdieľa s Vami súbor" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "PoužÃvateľ %s zdieľa s Vami adresár" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "PoužÃvateľ %s zdieľa s Vami súbor \"%s\". Môžete si ho stiahnuÅ¥ tu: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -84,59 +85,135 @@ msgstr "Neboli vybrané žiadne kategórie pre odstránenie." msgid "Error removing %s from favorites." msgstr "Chyba pri odstraňovanà %s z obľúbených položiek." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Nedeľa" + +#: js/config.php:32 +msgid "Monday" +msgstr "Pondelok" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Utorok" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Streda" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Å tvrtok" + +#: js/config.php:32 +msgid "Friday" +msgstr "Piatok" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Sobota" + +#: js/config.php:33 +msgid "January" +msgstr "Január" + +#: js/config.php:33 +msgid "February" +msgstr "Február" + +#: js/config.php:33 +msgid "March" +msgstr "Marec" + +#: js/config.php:33 +msgid "April" +msgstr "AprÃl" + +#: js/config.php:33 +msgid "May" +msgstr "Máj" + +#: js/config.php:33 +msgid "June" +msgstr "Jún" + +#: js/config.php:33 +msgid "July" +msgstr "Júl" + +#: js/config.php:33 +msgid "August" +msgstr "August" + +#: js/config.php:33 +msgid "September" +msgstr "September" + +#: js/config.php:33 +msgid "October" +msgstr "Október" + +#: js/config.php:33 +msgid "November" +msgstr "November" + +#: js/config.php:33 +msgid "December" +msgstr "December" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Nastavenia" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "pred sekundami" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "pred minútou" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "pred {minutes} minútami" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "Pred 1 hodinou." -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "Pred {hours} hodinami." -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "dnes" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "vÄera" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "pred {days} dňami" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "minulý mesiac" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "Pred {months} mesiacmi." -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "pred mesiacmi" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "minulý rok" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "pred rokmi" @@ -166,8 +243,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Chyba" @@ -179,122 +256,141 @@ msgstr "NeÅ¡pecifikované meno aplikácie." msgid "The required file {file} is not installed!" msgstr "Požadovaný súbor {file} nie je inÅ¡talovaný!" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Zdieľaj" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Shared" +msgstr "Zdieľané" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Chyba poÄas zdieľania" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Chyba poÄas ukonÄenia zdieľania" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Chyba poÄas zmeny oprávnenÃ" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Zdieľané s vami a so skupinou {group} použÃvateľom {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Zdieľané s vami použÃvateľom {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "ZdieľaÅ¥ s" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "ZdieľaÅ¥ cez odkaz" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "ChrániÅ¥ heslom" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Heslo" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "OdoslaÅ¥ odkaz osobe e-mailom" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "OdoslaÅ¥" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "NastaviÅ¥ dátum expirácie" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Dátum expirácie" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "ZdieľaÅ¥ cez e-mail:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "UžÃvateľ nenájdený" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Zdieľanie už zdieľanej položky nie je povolené" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Zdieľané v {item} s {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "ZruÅ¡iÅ¥ zdieľanie" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "môže upraviÅ¥" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "riadenie prÃstupu" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "vytvoriÅ¥" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "aktualizácia" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "zmazaÅ¥" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "zdieľaÅ¥" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Chránené heslom" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Chyba pri odstraňovanà dátumu vyprÅ¡ania platnosti" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Chyba pri nastavenà dátumu vyprÅ¡ania platnosti" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Odosielam ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Email odoslaný" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "Aktualizácia nebola úspeÅ¡ná. Problém nahláste na <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "Aktualizácia bola úspeÅ¡ná. Presmerovávam na ownCloud." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Obnovenie hesla pre ownCloud" @@ -446,87 +542,11 @@ msgstr "Server databázy" msgid "Finish setup" msgstr "DokonÄiÅ¥ inÅ¡taláciu" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Nedeľa" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Pondelok" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Utorok" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Streda" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Å tvrtok" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Piatok" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Sobota" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Január" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Február" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Marec" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "AprÃl" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Máj" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Jún" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Júl" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "August" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "September" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Október" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "November" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "December" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "webové služby pod vaÅ¡ou kontrolou" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "OdhlásiÅ¥" diff --git a/l10n/sk_SK/files.po b/l10n/sk_SK/files.po index 30706c6eff9..2ca4b672973 100644 --- a/l10n/sk_SK/files.po +++ b/l10n/sk_SK/files.po @@ -4,6 +4,7 @@ # # Translators: # <intense.feel@gmail.com>, 2012. +# Marián Hvolka <marian.hvolka@stuba.sk>, 2013. # <martin.babik@gmail.com>, 2012. # Roman Priesol <roman@priesol.net>, 2012. # <zatroch.martin@gmail.com>, 2012. @@ -11,8 +12,8 @@ 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 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" @@ -21,217 +22,198 @@ msgstr "" "Language: sk_SK\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "OdoslaÅ¥" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Žiaden súbor nebol odoslaný. Neznáma chyba" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Nenastala žiadna chyba, súbor bol úspeÅ¡ne nahraný" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Nahraný súbor predÄil konfiguraÄnú direktÃvu upload_max_filesize v súbore php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Nahrávaný súbor presiahol MAX_FILE_SIZE direktÃvu, ktorá bola Å¡pecifikovaná v HTML formulári" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Nahrávaný súbor bol iba ÄiastoÄne nahraný" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Žiaden súbor nebol nahraný" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Chýbajúci doÄasný prieÄinok" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Zápis na disk sa nepodaril" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" -msgstr "" +msgstr "Nie je k dispozÃcii dostatok miesta" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." -msgstr "" +msgstr "Neplatný adresár" #: appinfo/app.php:10 msgid "Files" msgstr "Súbory" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "NezdielaÅ¥" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "OdstrániÅ¥" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "PremenovaÅ¥" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} už existuje" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "nahradiÅ¥" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "pomôcÅ¥ s menom" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "zruÅ¡iÅ¥" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "prepÃsaný {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "vrátiÅ¥" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "prepÃsaný {new_name} súborom {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "zdieľanie zruÅ¡ené pre {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "zmazané {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." -msgstr "" +msgstr "'.' je neplatné meno súboru." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." -msgstr "" +msgstr "Meno súboru nemôže byÅ¥ prázdne" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Nesprávne meno, '\\', '/', '<', '>', ':', '\"', '|', '?' a '*' nie sú povolené hodnoty." -#: js/files.js:204 +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "VaÅ¡e úložisko je plné. Súbory nemožno aktualizovaÅ¥ ani synchronizovaÅ¥!" + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "VaÅ¡e úložisko je takmer plné ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." -msgstr "" +msgstr "VaÅ¡e sÅ¥ahovanie sa pripravuje. Ak sú sÅ¥ahované súbory veľké, môže to chvÃľu trvaÅ¥." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Nemôžem nahraÅ¥ súbor lebo je to prieÄinok alebo má 0 bajtov." -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Chyba odosielania" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "ZavrieÅ¥" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "ÄŒaká sa" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 súbor sa posiela " -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} súborov odosielaných" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Odosielanie zruÅ¡ené" -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL nemôže byÅ¥ prázdne" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" -msgstr "" - -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} súborov prehľadaných" +msgstr "Neplatné meno adresára. PoužÃvanie mena 'Shared' je vyhradené len pre Owncloud" -#: js/files.js:783 -msgid "error while scanning" -msgstr "chyba poÄas kontroly" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Meno" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "VeľkosÅ¥" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Upravené" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 prieÄinok" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} prieÄinkov" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 súbor" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} súborov" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "OdoslaÅ¥" + #: templates/admin.php:5 msgid "File handling" msgstr "Nastavenie správanie k súborom" @@ -280,32 +262,40 @@ msgstr "PrieÄinok" msgid "From link" msgstr "Z odkazu" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "ZruÅ¡iÅ¥ odosielanie" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Žiadny súbor. Nahrajte nieÄo!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "StiahnuÅ¥" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Odosielaný súbor je prÃliÅ¡ veľký" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Súbory, ktoré sa snažÃte nahraÅ¥, presahujú maximálnu veľkosÅ¥ pre nahratie súborov na tento server." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "ÄŒakajte, súbory sú prehľadávané." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Práve prehliadané" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/sk_SK/files_encryption.po b/l10n/sk_SK/files_encryption.po index 813c05deb37..d2847e30d9e 100644 --- a/l10n/sk_SK/files_encryption.po +++ b/l10n/sk_SK/files_encryption.po @@ -4,13 +4,14 @@ # # Translators: # <intense.feel@gmail.com>, 2012. +# Marián Hvolka <marian.hvolka@stuba.sk>, 2013. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-30 00:23+0100\n" +"PO-Revision-Date: 2013-01-29 14:49+0000\n" +"Last-Translator: mhh <marian.hvolka@stuba.sk>\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,53 +23,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "prepnuté na Å¡ifrovanie prostrednÃctvom klienta" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +msgstr "ZmeniÅ¥ Å¡ifrovacie heslo na prihlasovacie" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +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 "" +msgstr "Nie je možné zmeniÅ¥ Å¡ifrovacie heslo na prihlasovacie" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Vyberte režim Å¡ifrovania:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Å ifrovanie prostrednÃctvom klienta (najbezpeÄnejÅ¡ia voľba, neumožňuje vÅ¡ak prÃstup k súborom z webového rozhrania)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Å ifrovanie na serveri (umožňuje pristupovaÅ¥ k súborom z webového rozhrania a desktopového klienta)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Žiadne (žiadne Å¡ifrovanie)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Dôležité: ak si zvolÃte režim Å¡ifrovania, nie je možné ho znovu zruÅ¡iÅ¥" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "Definovaný použÃvateľom (umožňuje použÃvateľovi vybraÅ¥ si)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/sk_SK/files_external.po b/l10n/sk_SK/files_external.po index 7a081bb7aa5..56de6320ffe 100644 --- a/l10n/sk_SK/files_external.po +++ b/l10n/sk_SK/files_external.po @@ -4,14 +4,15 @@ # # Translators: # <intense.feel@gmail.com>, 2012. +# Marián Hvolka <marian.hvolka@stuba.sk>, 2013. # <martin.babik@gmail.com>, 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 06:20+0000\n" +"Last-Translator: mhh <marian.hvolka@stuba.sk>\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" @@ -27,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:40 +#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:41 msgid "Grant access" msgstr "PovoliÅ¥ prÃstup" -#: js/dropbox.js:73 js/google.js:72 +#: js/dropbox.js:73 js/google.js:73 msgid "Fill out all required fields" msgstr "Vyplňte vÅ¡etky vyžadované kolónky" @@ -39,22 +40,22 @@ 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:73 js/google.js:78 +#: js/google.js:26 js/google.js:74 js/google.js:79 msgid "Error configuring Google Drive storage" msgstr "Chyba pri konfigurácii úložiska Google drive" -#: lib/config.php:434 +#: lib/config.php:405 msgid "" "<b>Warning:</b> \"smbclient\" is not installed. Mounting of CIFS/SMB shares " "is not possible. Please ask your system administrator to install it." -msgstr "" +msgstr "<b>Upozornenie:</b> \"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:435 +#: lib/config.php:406 msgid "" "<b>Warning:</b> 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 "<b>Upozornenie:</b> Podpora FTP v PHP nie je povolená alebo nainÅ¡talovaná. Nie je možné pripojenie oddielov FTP. Požiadajte administrátora systému, nech ho nainÅ¡taluje." #: templates/settings.php:3 msgid "External Storage" @@ -101,7 +102,7 @@ msgid "Users" msgstr "UžÃvatelia" #: 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 "OdstrániÅ¥" @@ -113,10 +114,10 @@ msgstr "PovoliÅ¥ externé úložisko" msgid "Allow users to mount their own external storage" msgstr "PovoliÅ¥ užÃvateľom pripojiÅ¥ ich vlastné externé úložisko" -#: templates/settings.php:139 +#: templates/settings.php:136 msgid "SSL root certificates" msgstr "Koreňové SSL certifikáty" -#: templates/settings.php:158 +#: templates/settings.php:153 msgid "Import Root Certificate" msgstr "ImportovaÅ¥ koreňový certifikát" diff --git a/l10n/sk_SK/files_trashbin.po b/l10n/sk_SK/files_trashbin.po new file mode 100644 index 00000000000..8615310fbc8 --- /dev/null +++ b/l10n/sk_SK/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk_SK\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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_SK/lib.po b/l10n/sk_SK/lib.po index 07b4a925917..693d9535e45 100644 --- a/l10n/sk_SK/lib.po +++ b/l10n/sk_SK/lib.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Marián Hvolka <marian.hvolka@stuba.sk>, 2013. # <martin.babik@gmail.com>, 2012. # Roman Priesol <roman@priesol.net>, 2012. # <zatroch.martin@gmail.com>, 2012. @@ -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-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-30 00:23+0100\n" +"PO-Revision-Date: 2013-01-29 16:07+0000\n" +"Last-Translator: mhh <marian.hvolka@stuba.sk>\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" @@ -60,9 +61,9 @@ msgstr "Späť na súbory" msgid "Selected files too large to generate zip file." msgstr "Zvolené súbory sú prÃliž veľké na vygenerovanie zip súboru." -#: helper.php:228 +#: helper.php:229 msgid "couldn't be determined" -msgstr "" +msgstr "nedá sa zistiÅ¥" #: json.php:28 msgid "Application is not enabled" diff --git a/l10n/sk_SK/settings.po b/l10n/sk_SK/settings.po index e3c919f0ad8..f5d4cc18d72 100644 --- a/l10n/sk_SK/settings.po +++ b/l10n/sk_SK/settings.po @@ -4,6 +4,7 @@ # # Translators: # <intense.feel@gmail.com>, 2011, 2012. +# Marián Hvolka <marian.hvolka@stuba.sk>, 2013. # <martin.babik@gmail.com>, 2012. # Roman Priesol <roman@priesol.net>, 2012. # <typhoon@zoznam.sk>, 2012. @@ -12,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" @@ -92,7 +93,7 @@ msgstr "PovoliÅ¥" msgid "Saving..." msgstr "Ukladám..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Slovensky" @@ -104,41 +105,41 @@ msgstr "PridaÅ¥ vaÅ¡u aplikáciu" msgid "More Apps" msgstr "Viac aplikáciÃ" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Vyberte aplikáciu" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Pozrite si stránku aplikácià na apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licencované <span class=\"author\"></span>" #: templates/help.php:3 msgid "User Documentation" -msgstr "" +msgstr "PrÃruÄka použÃvateľa" #: templates/help.php:4 msgid "Administrator Documentation" -msgstr "" +msgstr "PrÃruÄka správcu" #: templates/help.php:6 msgid "Online Documentation" -msgstr "" +msgstr "Online prÃruÄka" #: templates/help.php:7 msgid "Forum" -msgstr "" +msgstr "Fórum" #: templates/help.php:9 msgid "Bugtracker" -msgstr "" +msgstr "Bugtracker" #: templates/help.php:11 msgid "Commercial Support" -msgstr "" +msgstr "KomerÄná podpora" #: templates/personal.php:8 #, php-format @@ -151,17 +152,17 @@ msgstr "Klienti" #: templates/personal.php:13 msgid "Download Desktop Clients" -msgstr "" +msgstr "StiahnuÅ¥ desktopového klienta" #: templates/personal.php:14 msgid "Download Android Client" -msgstr "" +msgstr "StiahnuÅ¥ Android klienta" #: templates/personal.php:15 msgid "Download iOS Client" -msgstr "" +msgstr "StiahnuÅ¥ iOS klienta" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Heslo" @@ -211,15 +212,15 @@ msgstr "PomôcÅ¥ s prekladom" #: templates/personal.php:52 msgid "WebDAV" -msgstr "" +msgstr "WebDAV" #: templates/personal.php:54 msgid "Use this address to connect to your ownCloud in your file manager" -msgstr "" +msgstr "Použite túto adresu pre pripojenie vášho ownCloud k súborovému správcovi" #: templates/personal.php:63 msgid "Version" -msgstr "" +msgstr "Verzia" #: templates/personal.php:65 msgid "" @@ -231,11 +232,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Vyvinuté <a href=\"http://ownCloud.org/contact\" target=\"_blank\">komunitou ownCloud</a>,<a href=\"https://github.com/owncloud\" target=\"_blank\">zdrojový kód</a> je licencovaný pod <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Meno" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "Prihlasovacie meno" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Skupiny" @@ -245,28 +246,40 @@ msgstr "VytvoriÅ¥" #: templates/users.php:35 msgid "Default Storage" -msgstr "" +msgstr "Predvolené úložisko" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" -msgstr "" +msgstr "Nelimitované" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Iné" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "Zobrazované meno" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Správca skupiny" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" +msgstr "Úložisko" + +#: templates/users.php:97 +msgid "change display name" msgstr "" -#: templates/users.php:133 -msgid "Default" +#: templates/users.php:101 +msgid "set new password" msgstr "" -#: templates/users.php:161 +#: templates/users.php:137 +msgid "Default" +msgstr "Predvolené" + +#: templates/users.php:165 msgid "Delete" msgstr "OdstrániÅ¥" diff --git a/l10n/sk_SK/user_ldap.po b/l10n/sk_SK/user_ldap.po index 497fea635a1..e3c65fc426a 100644 --- a/l10n/sk_SK/user_ldap.po +++ b/l10n/sk_SK/user_ldap.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Marián Hvolka <marian.hvolka@stuba.sk>, 2013. # Roman Priesol <roman@priesol.net>, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-16 00:19+0100\n" -"PO-Revision-Date: 2013-01-15 23:20+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 06:20+0000\n" +"Last-Translator: mhh <marian.hvolka@stuba.sk>\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" @@ -23,13 +24,13 @@ msgid "" "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may" " experience unexpected behaviour. Please ask your system administrator to " "disable one of them." -msgstr "" +msgstr "<b>Upozornenie:</b> 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." #: templates/settings.php:11 msgid "" "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not " "work. Please ask your system administrator to install it." -msgstr "" +msgstr "<b>Upozornenie:</b> nie je nainÅ¡talovaný LDAP modul pre PHP, backend vrstva nebude fungovaÅ¥. Požádejte správcu systému aby ho nainÅ¡taloval." #: templates/settings.php:15 msgid "Host" @@ -46,7 +47,7 @@ msgstr "Základné DN" #: templates/settings.php:16 msgid "One Base DN per line" -msgstr "" +msgstr "Jedno základné DN na riadok" #: templates/settings.php:16 msgid "You can specify Base DN for users and groups in the Advanced tab" @@ -121,7 +122,7 @@ msgstr "Základný použÃvateľský strom" #: templates/settings.php:25 msgid "One User Base DN per line" -msgstr "" +msgstr "Jedna použÃvateľská základná DN na riadok" #: templates/settings.php:26 msgid "Base Group Tree" @@ -129,7 +130,7 @@ msgstr "Základný skupinový strom" #: templates/settings.php:26 msgid "One Group Base DN per line" -msgstr "" +msgstr "Jedna skupinová základná DN na riadok" #: templates/settings.php:27 msgid "Group-Member association" diff --git a/l10n/sk_SK/user_webdavauth.po b/l10n/sk_SK/user_webdavauth.po index 26b96954a94..b3a30b89ca6 100644 --- a/l10n/sk_SK/user_webdavauth.po +++ b/l10n/sk_SK/user_webdavauth.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Marián Hvolka <marian.hvolka@stuba.sk>, 2013. # <zatroch.martin@gmail.com>, 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 <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 08:31+0000\n" +"Last-Translator: mhh <marian.hvolka@stuba.sk>\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" @@ -20,15 +21,15 @@ msgstr "" #: templates/settings.php:3 msgid "WebDAV Authentication" -msgstr "" +msgstr "WebDAV overenie" #: templates/settings.php:4 msgid "URL: http://" -msgstr "" +msgstr "URL: http://" #: templates/settings.php:6 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 odoÅ¡le použÃvateľské údaje na zadanú URL. Plugin skontroluje odpoveÄ a považuje návratovú hodnotu HTTP 401 a 403 za neplatné údaje a vÅ¡etky ostatné hodnoty ako platné prihlasovacie údaje." diff --git a/l10n/sl/core.po b/l10n/sl/core.po index 2b4637d8013..c1774ede61b 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -21,24 +21,24 @@ 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/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "Uporanik %s je dal datoteko v souporabo z vami" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "Uporanik %s je dal mapo v souporabo z vami" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "Uporanik %s je dal datoteko \"%s\" v souporabo z vami. Prenesete jo lahko tukaj: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -83,59 +83,135 @@ msgstr "Za izbris ni izbrana nobena kategorija." msgid "Error removing %s from favorites." msgstr "Napaka pri odstranjevanju %s iz priljubljenih." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "nedelja" + +#: js/config.php:32 +msgid "Monday" +msgstr "ponedeljek" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "torek" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "sreda" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Äetrtek" + +#: js/config.php:32 +msgid "Friday" +msgstr "petek" + +#: js/config.php:32 +msgid "Saturday" +msgstr "sobota" + +#: js/config.php:33 +msgid "January" +msgstr "januar" + +#: js/config.php:33 +msgid "February" +msgstr "februar" + +#: js/config.php:33 +msgid "March" +msgstr "marec" + +#: js/config.php:33 +msgid "April" +msgstr "april" + +#: js/config.php:33 +msgid "May" +msgstr "maj" + +#: js/config.php:33 +msgid "June" +msgstr "junij" + +#: js/config.php:33 +msgid "July" +msgstr "julij" + +#: js/config.php:33 +msgid "August" +msgstr "avgust" + +#: js/config.php:33 +msgid "September" +msgstr "september" + +#: js/config.php:33 +msgid "October" +msgstr "oktober" + +#: js/config.php:33 +msgid "November" +msgstr "november" + +#: js/config.php:33 +msgid "December" +msgstr "december" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Nastavitve" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "pred nekaj sekundami" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "pred minuto" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "pred {minutes} minutami" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "pred 1 uro" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "pred {hours} urami" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "danes" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "vÄeraj" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "pred {days} dnevi" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "zadnji mesec" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "pred {months} meseci" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "mesecev nazaj" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "lansko leto" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "let nazaj" @@ -165,8 +241,8 @@ msgid "The object type is not specified." msgstr "Vrsta predmeta ni podana." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Napaka" @@ -178,122 +254,141 @@ msgstr "Ime aplikacije ni podano." msgid "The required file {file} is not installed!" msgstr "Zahtevana datoteka {file} ni nameÅ¡Äena!" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Souporaba" + +#: 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 "Napaka med souporabo" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Napaka med odstranjevanjem souporabe" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Napaka med spreminjanjem dovoljenj" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "V souporabi z vami in skupino {group}. Lastnik je {owner}." -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "V souporabi z vami. Lastnik je {owner}." -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "OmogoÄi souporabo z" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "OmogoÄi souporabo s povezavo" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "ZaÅ¡Äiti z geslom" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Geslo" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Posreduj povezavo po e-poÅ¡ti" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "PoÅ¡lji" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Nastavi datum preteka" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Datum preteka" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Souporaba preko elektronske poÅ¡te:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Ni najdenih uporabnikov" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Ponovna souporaba ni omogoÄena" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "V souporabi v {item} z {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Odstrani souporabo" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "lahko ureja" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "nadzor dostopa" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "ustvari" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "posodobi" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "izbriÅ¡e" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "doloÄi souporabo" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "ZaÅ¡Äiteno z geslom" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Napaka brisanja datuma preteka" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Napaka med nastavljanjem datuma preteka" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "PoÅ¡iljam ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "E-poÅ¡ta je bila poslana" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "Ponastavitev gesla ownCloud" @@ -445,87 +540,11 @@ msgstr "Gostitelj podatkovne zbirke" msgid "Finish setup" msgstr "DokonÄaj namestitev" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "nedelja" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "ponedeljek" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "torek" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "sreda" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Äetrtek" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "petek" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "sobota" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "januar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "februar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "marec" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "april" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "maj" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "junij" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "julij" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "avgust" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "september" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "oktober" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "november" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "december" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "spletne storitve pod vaÅ¡im nadzorom" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Odjava" diff --git a/l10n/sl/files.po b/l10n/sl/files.po index db5b65339a7..dec7d656901 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -21,65 +21,46 @@ 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:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "PoÅ¡lji" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Nobena datoteka ni naložena. Neznana napaka." -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Datoteka je uspeÅ¡no naložena brez napak." -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Naložena datoteka presega dovoljeno velikost. Le-ta je doloÄena z vrstico upload_max_filesize v datoteki php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Naložena datoteka presega velikost, ki jo doloÄa parameter MAX_FILE_SIZE v HTML obrazcu" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Datoteka je le delno naložena" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Nobena datoteka ni bila naložena" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Manjka zaÄasna mapa" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Pisanje na disk je spodletelo" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -87,151 +68,151 @@ msgstr "" msgid "Files" msgstr "Datoteke" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Odstrani iz souporabe" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "IzbriÅ¡i" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Preimenuj" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} že obstaja" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "zamenjaj" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "predlagaj ime" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "prekliÄi" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "zamenjano je ime {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "razveljavi" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "zamenjano ime {new_name} z imenom {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "odstranjeno iz souporabe {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "izbrisano {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Neveljavno ime, znaki '\\', '/', '<', '>', ':', '\"', '|', '?' in '*' niso dovoljeni." -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "PoÅ¡iljanje ni mogoÄe, saj gre za mapo, ali pa je datoteka velikosti 0 bajtov." -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Napaka med nalaganjem" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Zapri" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "V Äakanju ..." -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "PoÅ¡iljanje 1 datoteke" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "nalagam {count} datotek" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "PoÅ¡iljanje je preklicano." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "Naslov URL ne sme biti prazen." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} files scanned" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "napaka med pregledovanjem datotek" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Ime" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Velikost" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Spremenjeno" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 mapa" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} map" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 datoteka" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} datotek" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "PoÅ¡lji" + #: templates/admin.php:5 msgid "File handling" msgstr "Upravljanje z datotekami" @@ -280,32 +261,40 @@ msgstr "Mapa" msgid "From link" msgstr "Iz povezave" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "PrekliÄi poÅ¡iljanje" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Tukaj ni niÄesar. Naložite kaj!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Prejmi" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Nalaganje ni mogoÄe, ker je preveliko" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Datoteke, ki jih želite naložiti, presegajo najveÄjo dovoljeno velikost na tem strežniku." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Poteka preuÄevanje datotek, poÄakajte ..." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Trenutno poteka preuÄevanje" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/sl/files_trashbin.po b/l10n/sl/files_trashbin.po new file mode 100644 index 00000000000..102ce0e9eb6 --- /dev/null +++ b/l10n/sl/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"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/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/sl/settings.po b/l10n/sl/settings.po index 4e336bf871a..c9d12a2351b 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -91,7 +91,7 @@ msgstr "OmogoÄi" msgid "Saving..." msgstr "Poteka shranjevanje ..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__ime_jezika__" @@ -103,15 +103,15 @@ msgstr "Dodaj program" msgid "More Apps" msgstr "VeÄ programov" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Izberite program" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "ObiÅ¡Äite spletno stran programa na apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-z dovoljenjem s strani <span class=\"author\"></span>" @@ -160,7 +160,7 @@ msgstr "Prenesi Android odjemalec" msgid "Download iOS Client" msgstr "Prenesi iOS odjemalec" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Geslo" @@ -230,11 +230,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Programski paket razvija <a href=\"http://ownCloud.org/contact\" target=\"_blank\">skupnost ownCloud</a>. <a href=\"https://github.com/owncloud\" target=\"_blank\">Izvorna koda</a> je objavljena pod pogoji dovoljenja <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"SploÅ¡no javno dovoljenje Affero\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Ime" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Skupine" @@ -246,26 +246,38 @@ msgstr "Ustvari" msgid "Default Storage" msgstr "Privzeta shramba" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Neomejeno" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Drugo" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Skrbnik skupine" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Shramba" -#: templates/users.php:133 +#: 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 "Privzeto" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "IzbriÅ¡i" diff --git a/l10n/sr/core.po b/l10n/sr/core.po index b40e7317a48..b28eef045f0 100644 --- a/l10n/sr/core.po +++ b/l10n/sr/core.po @@ -3,15 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Ivan Petrović <ivan@ipplusstudio.com>, 2012. +# Ivan Petrović <ivan@ipplusstudio.com>, 2012-2013. # <marko@evizo.com>, 2012. # Slobodan Terzić <githzerai06@gmail.com>, 2011, 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" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" @@ -20,24 +20,24 @@ 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/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" -msgstr "" +msgstr "КориÑник %s дели Ñа вама датотеку" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" -msgstr "" +msgstr "КориÑник %s дели Ñа вама директоријум" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -82,59 +82,135 @@ msgstr "Ðи једна категорија није означена за бр msgid "Error removing %s from favorites." msgstr "Грешка приликом уклањања %s из омиљених" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Подешавања" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "пре неколико Ñекунди" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "пре 1 минут" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "пре {minutes} минута" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "Пре једног Ñата" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "Пре {hours} Ñата (Ñати)" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "данаÑ" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "јуче" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "пре {days} дана" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "прошлог меÑеца" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "Пре {months} меÑеца (меÑеци)" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "меÑеци раније" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "прошле године" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "година раније" @@ -164,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Грешка" @@ -177,120 +253,139 @@ msgstr "Име програма није унето." msgid "The required file {file} is not installed!" msgstr "Потребна датотека {file} није инÑталирана." -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Грешка код иÑкључења дељења" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Грешка код промене дозвола" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Дељено Ñа вама и Ñа групом {group}. Поделио {owner}." -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Поделио Ñа вама {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Подели Ñа" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Подели линк" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Заштићено лозинком" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Лозинка" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" -msgstr "" +msgstr "Пошаљи" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "ПоÑтави датум иÑтека" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Датум иÑтека" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Подели поштом:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "ОÑобе ниÑу пронађене." -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Поновно дељење није дозвољено" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Подељено унутар {item} Ñа {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Ðе дели" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "може да мења" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "права приÑтупа" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "направи" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "ажурирај" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "обриши" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "подели" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Заштићено лозинком" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Грешка код поништавања датума иÑтека" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Грешка код поÑтављања датума иÑтека" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." -msgstr "" +msgstr "Шаљем..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" +msgstr "Порука је поÑлата" + +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "" + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." msgstr "" #: lostpassword/controller.php:47 @@ -444,87 +539,11 @@ msgstr "Домаћин базе" msgid "Finish setup" msgstr "Заврши подешавање" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Ðедеља" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Понедељак" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Уторак" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Среда" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Четвртак" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Петак" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Субота" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Јануар" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Фебруар" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Март" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Ðприл" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Мај" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Јун" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Јул" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "ÐвгуÑÑ‚" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Септембар" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Октобар" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Ðовембар" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Децембар" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "веб ÑервиÑи под контролом" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Одјава" @@ -565,4 +584,4 @@ msgstr "Ñледеће" #: templates/update.php:3 #, php-format msgid "Updating ownCloud to version %s, this may take a while." -msgstr "" +msgstr "Ðадоградња ownCloud-а на верзију %s, Ñачекајте тренутак." diff --git a/l10n/sr/files.po b/l10n/sr/files.po index 66e365482d7..0d4505ebefc 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" @@ -20,65 +20,46 @@ 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:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Отпреми" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Ðије дошло до грешке. Датотека је уÑпешно отпремљена." -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Отпремљена датотека прелази Ñмерницу upload_max_filesize у датотеци php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Отпремљена датотека прелази Ñмерницу MAX_FILE_SIZE која је наведена у HTML обраÑцу" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Датотека је делимично отпремљена" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Датотека није отпремљена" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "ÐедоÑтаје привремена фаÑцикла" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Ðе могу да пишем на диÑк" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -86,151 +67,151 @@ msgstr "" msgid "Files" msgstr "Датотеке" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Укини дељење" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Обриши" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Преименуј" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} већ поÑтоји" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "замени" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "предложи назив" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "откажи" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "замењено {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "опозови" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "замењено {new_name} Ñа {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "укинуто дељење {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "обриÑано {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "ÐеиÑправан назив. Следећи знакови ниÑу дозвољени: \\, /, <, >, :, \", |, ? и *." -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Ðе могу да отпремим датотеку као фаÑциклу или она има 0 бајтова" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Грешка при отпремању" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Затвори" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Ðа чекању" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "Отпремам 1 датотеку" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "Отпремам {count} датотеке/а" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Отпремање је прекинуто." -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Отпремање датотеке је у току. Ðко Ñада напуÑтите Ñтраницу, прекинућете отпремање." -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "Скенирано датотека: {count}" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "грешка при Ñкенирању" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Ðазив" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Величина" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Измењено" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 фаÑцикла" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} фаÑцикле/и" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 датотека" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} датотеке/а" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Отпреми" + #: templates/admin.php:5 msgid "File handling" msgstr "Управљање датотекама" @@ -279,32 +260,40 @@ msgstr "фаÑцикла" msgid "From link" msgstr "Са везе" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Прекини отпремање" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Овде нема ничег. Отпремите нешто!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Преузми" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Датотека је превелика" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Скенирам датотеке…" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Тренутно Ñкенирање" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/sr/files_sharing.po b/l10n/sr/files_sharing.po index 36c9d0ac467..345fb947c11 100644 --- a/l10n/sr/files_sharing.po +++ b/l10n/sr/files_sharing.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot <thomas.mueller@tmit.eu>\n" +"POT-Creation-Date: 2013-01-24 00:06+0100\n" +"PO-Revision-Date: 2013-01-23 08:30+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -23,26 +23,26 @@ msgstr "" #: templates/authenticate.php:6 msgid "Submit" -msgstr "" +msgstr "Пошаљи" -#: templates/public.php:9 +#: templates/public.php:17 #, php-format msgid "%s shared the folder %s with you" msgstr "" -#: templates/public.php:11 +#: templates/public.php:19 #, php-format msgid "%s shared the file %s with you" msgstr "" -#: templates/public.php:14 templates/public.php:30 +#: templates/public.php:22 templates/public.php:38 msgid "Download" msgstr "" -#: templates/public.php:29 +#: templates/public.php:37 msgid "No preview available for" msgstr "" -#: templates/public.php:37 +#: templates/public.php:43 msgid "web services under your control" msgstr "" diff --git a/l10n/sr/files_trashbin.po b/l10n/sr/files_trashbin.po new file mode 100644 index 00000000000..4841b50b031 --- /dev/null +++ b/l10n/sr/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"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/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/sr/lib.po b/l10n/sr/lib.po index d6456f9db16..3b899eb0222 100644 --- a/l10n/sr/lib.po +++ b/l10n/sr/lib.po @@ -3,15 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Ivan Petrović <ivan@ipplusstudio.com>, 2012. +# Ivan Petrović <ivan@ipplusstudio.com>, 2012-2013. # <theranchcowboy@gmail.com>, 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" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-24 00:06+0100\n" +"PO-Revision-Date: 2013-01-23 08:24+0000\n" +"Last-Translator: Ivan Petrović <ivan@ipplusstudio.com>\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" @@ -59,9 +59,9 @@ msgstr "Ðазад на датотеке" msgid "Selected files too large to generate zip file." msgstr "Изабране датотеке Ñу превелике да биÑте направили ZIP датотеку." -#: helper.php:228 +#: helper.php:229 msgid "couldn't be determined" -msgstr "" +msgstr "није одређено" #: json.php:28 msgid "Application is not enabled" diff --git a/l10n/sr/settings.po b/l10n/sr/settings.po index dca5c1ac469..02c0627b45c 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" @@ -89,7 +89,7 @@ msgstr "Укључи" msgid "Saving..." msgstr "Чување у току..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__language_name__" @@ -101,15 +101,15 @@ msgstr "Додајте ваш програм" msgid "More Apps" msgstr "Више програма" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Изаберите програм" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Погледајте Ñтраницу Ñа програмима на apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-лиценцирао <span class=\"author\"></span>" @@ -158,7 +158,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Лозинка" @@ -228,11 +228,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Развијају <a href=\"http://ownCloud.org/contact\" target=\"_blank\">Оунклауд (ownCloud) заједница</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">изворни код</a> је издат под <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Ðферо Јавном Лиценцом (Affero General Public License)\">ÐГПЛ лиценцом</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Име" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Групе" @@ -244,26 +244,38 @@ msgstr "Ðаправи" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Друго" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Управник групе" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Обриши" diff --git a/l10n/sr@latin/core.po b/l10n/sr@latin/core.po index 2cd55d70441..fd54f215b9b 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-30 00:23+0100\n" +"PO-Revision-Date: 2013-01-29 23:23+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -18,24 +18,24 @@ 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/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -80,59 +80,135 @@ msgstr "" msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Nedelja" + +#: js/config.php:32 +msgid "Monday" +msgstr "Ponedeljak" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Utorak" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Sreda" + +#: js/config.php:32 +msgid "Thursday" +msgstr "ÄŒetvrtak" + +#: js/config.php:32 +msgid "Friday" +msgstr "Petak" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Subota" + +#: js/config.php:33 +msgid "January" +msgstr "Januar" + +#: js/config.php:33 +msgid "February" +msgstr "Februar" + +#: js/config.php:33 +msgid "March" +msgstr "Mart" + +#: js/config.php:33 +msgid "April" +msgstr "April" + +#: js/config.php:33 +msgid "May" +msgstr "Maj" + +#: js/config.php:33 +msgid "June" +msgstr "Jun" + +#: js/config.php:33 +msgid "July" +msgstr "Jul" + +#: js/config.php:33 +msgid "August" +msgstr "Avgust" + +#: js/config.php:33 +msgid "September" +msgstr "Septembar" + +#: js/config.php:33 +msgid "October" +msgstr "Oktobar" + +#: js/config.php:33 +msgid "November" +msgstr "Novembar" + +#: js/config.php:33 +msgid "December" +msgstr "Decembar" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "PodeÅ¡avanja" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "" @@ -162,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "" @@ -175,122 +251,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Lozinka" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "" @@ -442,87 +537,11 @@ msgstr "Domaćin baze" msgid "Finish setup" msgstr "ZavrÅ¡i podeÅ¡avanje" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Nedelja" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Ponedeljak" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Utorak" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Sreda" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "ÄŒetvrtak" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Petak" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Subota" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Januar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Februar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Mart" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "April" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Maj" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Jun" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Jul" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Avgust" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Septembar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Oktobar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Novembar" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Decembar" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Odjava" diff --git a/l10n/sr@latin/files.po b/l10n/sr@latin/files.po index d9fd6727232..73873acd218 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -18,65 +18,46 @@ 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:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "PoÅ¡alji" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Nema greÅ¡ke, fajl je uspeÅ¡no poslat" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Poslati fajl prevazilazi direktivu MAX_FILE_SIZE koja je navedena u HTML formi" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Poslati fajl je samo delimiÄno otpremljen!" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Nijedan fajl nije poslat" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Nedostaje privremena fascikla" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -84,151 +65,151 @@ msgstr "" msgid "Files" msgstr "Fajlovi" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "ObriÅ¡i" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Zatvori" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Ime" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "VeliÄina" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Zadnja izmena" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "PoÅ¡alji" + #: templates/admin.php:5 msgid "File handling" msgstr "" @@ -277,32 +258,40 @@ msgstr "" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Ovde nema niÄeg. PoÅ¡aljite neÅ¡to!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Preuzmi" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "PoÅ¡iljka je prevelika" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Fajlovi koje želite da poÅ¡aljete prevazilaze ograniÄenje maksimalne veliÄine poÅ¡iljke na ovom serveru." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/sr@latin/files_trashbin.po b/l10n/sr@latin/files_trashbin.po new file mode 100644 index 00000000000..c7c81a1d61b --- /dev/null +++ b/l10n/sr@latin/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"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/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/sr@latin/settings.po b/l10n/sr@latin/settings.po index c11e3c37bfb..da806c71a99 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -88,7 +88,7 @@ msgstr "" msgid "Saving..." msgstr "" -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "" @@ -100,15 +100,15 @@ msgstr "" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Izaberite program" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -157,7 +157,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Lozinka" @@ -227,11 +227,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Ime" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupe" @@ -243,26 +243,38 @@ msgstr "Napravi" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Drugo" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "ObriÅ¡i" diff --git a/l10n/sv/core.po b/l10n/sv/core.po index 799ca43b10b..71a6c4faec7 100644 --- a/l10n/sv/core.po +++ b/l10n/sv/core.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# André <lokal_profil@hotmail.com>, 2013. # Christer Eriksson <post@hc3web.com>, 2012. # Daniel Sandman <revoltism@gmail.com>, 2012. # <hakan.thn@gmail.com>, 2011. @@ -13,8 +14,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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" @@ -23,24 +24,24 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "Användare %s delade en fil med dig" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "Användare %s delade en mapp med dig" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "Användare %s delade filen \"%s\" med dig. Den finns att ladda ner här: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -85,59 +86,135 @@ msgstr "Inga kategorier valda för radering." msgid "Error removing %s from favorites." msgstr "Fel vid borttagning av %s frÃ¥n favoriter." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Söndag" + +#: js/config.php:32 +msgid "Monday" +msgstr "MÃ¥ndag" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Tisdag" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Onsdag" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Torsdag" + +#: js/config.php:32 +msgid "Friday" +msgstr "Fredag" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Lördag" + +#: js/config.php:33 +msgid "January" +msgstr "Januari" + +#: js/config.php:33 +msgid "February" +msgstr "Februari" + +#: js/config.php:33 +msgid "March" +msgstr "Mars" + +#: js/config.php:33 +msgid "April" +msgstr "April" + +#: js/config.php:33 +msgid "May" +msgstr "Maj" + +#: js/config.php:33 +msgid "June" +msgstr "Juni" + +#: js/config.php:33 +msgid "July" +msgstr "Juli" + +#: js/config.php:33 +msgid "August" +msgstr "Augusti" + +#: js/config.php:33 +msgid "September" +msgstr "September" + +#: js/config.php:33 +msgid "October" +msgstr "Oktober" + +#: js/config.php:33 +msgid "November" +msgstr "November" + +#: js/config.php:33 +msgid "December" +msgstr "December" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Inställningar" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "sekunder sedan" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 minut sedan" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} minuter sedan" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 timme sedan" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} timmar sedan" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "i dag" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "i gÃ¥r" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} dagar sedan" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "förra mÃ¥naden" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} mÃ¥nader sedan" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "mÃ¥nader sedan" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "förra Ã¥ret" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "Ã¥r sedan" @@ -167,8 +244,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Fel" @@ -180,122 +257,141 @@ msgstr " Namnet pÃ¥ appen är inte specificerad." msgid "The required file {file} is not installed!" msgstr "Den nödvändiga filen {file} är inte installerad!" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Dela" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Shared" +msgstr "Delad" + +#: js/share.js:141 js/share.js:611 msgid "Error while sharing" msgstr "Fel vid delning" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Fel när delning skulle avslutas" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Fel vid ändring av rättigheter" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Delad med dig och gruppen {group} av {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Delad med dig av {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Delad med" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Delad med länk" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Lösenordsskydda" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Lösenord" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "E-posta länk till person" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Skicka" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Sätt utgÃ¥ngsdatum" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "UtgÃ¥ngsdatum" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Dela via e-post:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Hittar inga användare" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Dela vidare är inte tillÃ¥tet" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Delad i {item} med {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Sluta dela" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "kan redigera" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "Ã¥tkomstkontroll" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "skapa" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "uppdatera" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "radera" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "dela" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Lösenordsskyddad" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Fel vid borttagning av utgÃ¥ngsdatum" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Fel vid sättning av utgÃ¥ngsdatum" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Skickar ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "E-post skickat" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "Uppdateringen misslyckades. Rapportera detta problem till <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud-gemenskapen</a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "Uppdateringen lyckades. Du omdirigeras nu till OwnCloud" + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud lösenordsÃ¥terställning" @@ -447,87 +543,11 @@ msgstr "Databasserver" msgid "Finish setup" msgstr "Avsluta installation" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Söndag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "MÃ¥ndag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Tisdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Onsdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Torsdag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Fredag" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Lördag" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Januari" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Februari" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Mars" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "April" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Maj" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Juni" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Juli" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Augusti" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "September" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Oktober" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "November" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "December" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "webbtjänster under din kontroll" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Logga ut" diff --git a/l10n/sv/files.po b/l10n/sv/files.po index 4dc201683ef..9d76f3178fc 100644 --- a/l10n/sv/files.po +++ b/l10n/sv/files.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# André <lokal_profil@hotmail.com>, 2013. # Christer Eriksson <post@hc3web.com>, 2012. # Daniel Sandman <revoltism@gmail.com>, 2012. # Magnus Höglund <magnus@linux.com>, 2012-2013. @@ -13,9 +14,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:36+0000\n" -"Last-Translator: Magnus Höglund <magnus@linux.com>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -23,65 +24,46 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Ladda upp" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "Kan inte flytta %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Kan inte byta namn pÃ¥ filen" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Ingen fil uppladdad. Okänt fel" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Inga fel uppstod. Filen laddades upp utan problem" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Den uppladdade filen överskrider upload_max_filesize direktivet php.ini:" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Den uppladdade filen överstiger MAX_FILE_SIZE direktivet som anges i HTML-formulär" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Den uppladdade filen var endast delvis uppladdad" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Ingen fil blev uppladdad" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Saknar en tillfällig mapp" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Misslyckades spara till disk" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Inte tillräckligt med utrymme tillgängligt" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Felaktig mapp." @@ -89,151 +71,151 @@ msgstr "Felaktig mapp." msgid "Files" msgstr "Filer" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Sluta dela" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Radera" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Byt namn" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} finns redan" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "ersätt" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "föreslÃ¥ namn" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "avbryt" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "ersatt {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "Ã¥ngra" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "ersatt {new_name} med {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "stoppad delning {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "raderade {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' är ett ogiltigt filnamn." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Filnamn kan inte vara tomt." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Ogiltigt namn, '\\', '/', '<', '>', ':', '\"', '|', '?' och '*' är inte tillÃ¥tet." -#: js/files.js:204 +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "Ditt lagringsutrymme är fullt, filer kan ej längre laddas upp eller synkas!" + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "Ditt lagringsutrymme är nästan fullt ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "Din nedladdning förbereds. Det kan ta tid om det är stora filer." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Kunde inte ladda upp dina filer eftersom det antingen är en mapp eller har 0 bytes." -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Uppladdningsfel" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Stäng" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Väntar" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 filuppladdning" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} filer laddas upp" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Uppladdning avbruten." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL kan inte vara tom." -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "{count} filer skannade" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "fel vid skanning" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Namn" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Storlek" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Ändrad" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 mapp" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} mappar" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 fil" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} filer" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Ladda upp" + #: templates/admin.php:5 msgid "File handling" msgstr "Filhantering" @@ -282,32 +264,40 @@ msgstr "Mapp" msgid "From link" msgstr "FrÃ¥n länk" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Avbryt uppladdning" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Ingenting här. Ladda upp nÃ¥got!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Ladda ner" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "För stor uppladdning" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Filerna du försöker ladda upp överstiger den maximala storleken för filöverföringar pÃ¥ servern." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Filer skannas, var god vänta" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Aktuell skanning" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "Uppgraderar filsystemets cache..." diff --git a/l10n/sv/files_encryption.po b/l10n/sv/files_encryption.po index 946f272acca..cb599b8ee0c 100644 --- a/l10n/sv/files_encryption.po +++ b/l10n/sv/files_encryption.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Magnus Höglund <magnus@linux.com>, 2012. +# Magnus Höglund <magnus@linux.com>, 2012-2013. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-25 00:05+0100\n" +"PO-Revision-Date: 2013-01-24 20:45+0000\n" +"Last-Translator: Magnus Höglund <magnus@linux.com>\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" @@ -22,53 +22,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +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 "" +msgstr "Bytte till kryptering pÃ¥ klientsidan" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +msgstr "Ändra krypteringslösenord till loginlösenord" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +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 "" +msgstr "Kunde inte ändra ditt filkrypteringslösenord till ditt loginlösenord" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "Välj krypteringsläge:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "Kryptering pÃ¥ klientsidan (säkraste men gör det omöjligt att komma Ã¥t dina filer med en webbläsare)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "Kryptering pÃ¥ serversidan (kan komma Ã¥t dina filer frÃ¥n webbläsare och datorklient)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "Ingen (ingen kryptering alls)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "Viktigt: När du har valt ett krypteringsläge finns det inget sätt att ändra tillbaka" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "Användarspecifik (lÃ¥ter användaren bestämma)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/sv/files_trashbin.po b/l10n/sv/files_trashbin.po new file mode 100644 index 00000000000..0e87cb89c01 --- /dev/null +++ b/l10n/sv/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/sv/settings.po b/l10n/sv/settings.po index b51b40b3425..eef6b683428 100644 --- a/l10n/sv/settings.po +++ b/l10n/sv/settings.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# André <lokal_profil@hotmail.com>, 2013. # Christer Eriksson <post@hc3web.com>, 2012. # Daniel Sandman <revoltism@gmail.com>, 2012. # <hakan.thn@gmail.com>, 2011. @@ -15,9 +16,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 02:00+0000\n" +"Last-Translator: Lokal_Profil <lokal_profil@hotmail.com>\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" @@ -95,7 +96,7 @@ msgstr "Aktivera" msgid "Saving..." msgstr "Sparar..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__language_name__" @@ -107,15 +108,15 @@ msgstr "Lägg till din applikation" msgid "More Apps" msgstr "Fler Appar" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Välj en App" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Se programsida pÃ¥ apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licensierad av <span class=\"author\"></span>" @@ -164,7 +165,7 @@ msgstr "Ladda ner klient för Android" msgid "Download iOS Client" msgstr "Ladda ner klient för iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Lösenord" @@ -234,11 +235,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Utvecklad av <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud kommunity</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">källkoden</a> är licenserad under <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Namn" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "Inloggningsnamn" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Grupper" @@ -250,26 +251,38 @@ msgstr "Skapa" msgid "Default Storage" msgstr "Förvald lagring" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Obegränsad" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Annat" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "Visat namn" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Gruppadministratör" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Lagring" -#: templates/users.php:133 +#: templates/users.php:97 +msgid "change display name" +msgstr "ändra visat namn" + +#: templates/users.php:101 +msgid "set new password" +msgstr "ange nytt lösenord" + +#: templates/users.php:137 msgid "Default" msgstr "Förvald" -#: templates/users.php:161 +#: templates/users.php:165 msgid "Delete" msgstr "Radera" diff --git a/l10n/ta_LK/core.po b/l10n/ta_LK/core.po index 83a4981f2ef..acdbe5f39a9 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -18,24 +18,24 @@ msgstr "" "Language: ta_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -80,59 +80,135 @@ msgstr "நீகà¯à®•à¯à®µà®¤à®±à¯à®•௠எநà¯à®¤à®ªà¯ பிரிவà msgid "Error removing %s from favorites." msgstr "விரà¯à®ªà¯à®ªà®¤à¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ %s ஠அகறà¯à®±à¯à®µà®¤à®¿à®²à¯ வழà¯.உஇஇ" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "அமைபà¯à®ªà¯à®•ளà¯" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "செகà¯à®•னà¯à®•ளà¯à®•à¯à®•௠மà¯à®©à¯" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 நிமிடதà¯à®¤à®¿à®±à¯à®•௠மà¯à®©à¯ " -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{நிமிடஙà¯à®•ளà¯} நிமிடஙà¯à®•ளà¯à®•à¯à®•௠மà¯à®©à¯ " -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 மணிதà¯à®¤à®¿à®¯à®¾à®²à®¤à¯à®¤à®¿à®±à¯à®•௠மà¯à®©à¯" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{மணிதà¯à®¤à®¿à®¯à®¾à®²à®™à¯à®•ளà¯} மணிதà¯à®¤à®¿à®¯à®¾à®²à®™à¯à®•ளிறà¯à®•௠மà¯à®©à¯" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "இனà¯à®±à¯" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "நேறà¯à®±à¯" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{நாடà¯à®•ளà¯} நாடà¯à®•ளà¯à®•à¯à®•௠மà¯à®©à¯" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "கடநà¯à®¤ மாதமà¯" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{மாதஙà¯à®•ளà¯} மாதஙà¯à®•ளிறà¯à®•௠மà¯à®©à¯" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "மாதஙà¯à®•ளà¯à®•à¯à®•௠மà¯à®©à¯" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "கடநà¯à®¤ வரà¯à®Ÿà®®à¯" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "வரà¯à®Ÿà®™à¯à®•ளà¯à®•à¯à®•௠மà¯à®©à¯" @@ -162,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "வழà¯" @@ -175,122 +251,141 @@ msgstr "செயலி பெயர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®ªà¯à®ªà®Ÿà msgid "The required file {file} is not installed!" msgstr "தேவைபà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà¯ {கோபà¯à®ªà¯} நிறà¯à®µà®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ!" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "பகிராமல௠உளà¯à®³à®ªà¯à®ªà¯‹à®¤à®¾à®© வழà¯" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "அனà¯à®®à®¤à®¿à®•ள௠மாறà¯à®®à¯à®ªà¯‹à®¤à®¾à®© வழà¯" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "உஙà¯à®•ளà¯à®Ÿà®©à¯à®®à¯ கà¯à®´à¯à®µà¯à®•à¯à®•ிடையிலà¯à®®à¯ {கà¯à®´à¯} பகிரபà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯ {உரிமையாளரà¯}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "உஙà¯à®•ளà¯à®Ÿà®©à¯ பகிரபà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯ {உரிமையாளரà¯}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "பகிரà¯à®¤à®²à¯" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "இணைபà¯à®ªà¯à®Ÿà®©à¯ பகிரà¯à®¤à®²à¯" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ பாதà¯à®•ாதà¯à®¤à®²à¯" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "காலாவதி தேதியை கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®•" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "காலவதியாகà¯à®®à¯ திகதி" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "மினà¯à®©à®žà¯à®šà®²à®¿à®©à¯‚டான பகிரà¯à®µà¯: " -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "நபரà¯à®•ள௠யாரà¯à®®à¯ இலà¯à®²à¯ˆ" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "மீளà¯à®ªà®•ிரà¯à®µà®¤à®±à¯à®•௠அனà¯à®®à®¤à®¿ இலà¯à®²à¯ˆ " -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "{பயனாளரà¯} உடன௠{உரà¯à®ªà¯à®ªà®Ÿà®¿} பகிரபà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "பகிரமà¯à®Ÿà®¿à®¯à®¾à®¤à¯" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "தொகà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "கடà¯à®Ÿà¯à®ªà¯à®ªà®¾à®Ÿà®¾à®© அணà¯à®•லà¯" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "படைதà¯à®¤à®²à¯" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "இறà¯à®±à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "நீகà¯à®•à¯à®•" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "பகிரà¯à®¤à®²à¯" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯ பாதà¯à®•ாகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "காலாவதியாகà¯à®®à¯ திகதியை கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®¾à®®à¯ˆà®•à¯à®•ான வழà¯" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "காலாவதியாகà¯à®®à¯ திகதியை கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®µà®¤à®¿à®²à¯ வழà¯" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ownCloud இன௠கடவà¯à®šà¯à®šà¯Šà®²à¯ மீளமைபà¯à®ªà¯" @@ -442,87 +537,11 @@ msgstr "தரவà¯à®¤à¯à®¤à®³ ஓமà¯à®ªà¯à®©à®°à¯" msgid "Finish setup" msgstr "அமைபà¯à®ªà¯ˆ à®®à¯à®Ÿà®¿à®•à¯à®•" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "ஞாயிறà¯à®±à¯à®•à¯à®•ிழமை" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "திஙà¯à®•டà¯à®•ிழமை" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "செவà¯à®µà®¾à®¯à¯à®•à¯à®•ிழமை" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "பà¯à®¤à®©à¯à®•ிழமை" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "வியாழகà¯à®•ிழமை" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "வெளà¯à®³à®¿à®•à¯à®•ிழமை" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "சனிகà¯à®•ிழமை" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "தை" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "மாசி" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "பஙà¯à®•à¯à®©à®¿" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "சிதà¯à®¤à®¿à®°à¯ˆ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "வைகாசி" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "ஆனி" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "ஆடி" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "ஆவணி" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "பà¯à®°à®Ÿà¯à®Ÿà®¾à®šà®¿" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "à®à®ªà¯à®ªà®šà®¿" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "காரà¯à®¤à¯à®¤à®¿à®•ை" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "மாரà¯à®•ழி" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "உஙà¯à®•ள௠கடà¯à®Ÿà¯à®ªà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®©à¯ கீழ௠இணைய சேவைகளà¯" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "விடà¯à®ªà®¤à®¿à®•ை செயà¯à®•" diff --git a/l10n/ta_LK/files.po b/l10n/ta_LK/files.po index 25ae576772c..c88cea4b33a 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -18,65 +18,46 @@ msgstr "" "Language: ta_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "பதிவேறà¯à®±à¯à®•" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "ஒர௠கோபà¯à®ªà¯à®®à¯ பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ. அறியபà¯à®ªà®Ÿà®¾à®¤ வழà¯" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "இஙà¯à®•௠வழ௠இலà¯à®²à¯ˆ, கோபà¯à®ªà¯ வெறà¯à®±à®¿à®•ரமாக பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà®¾à®©à®¤à¯ HTML படிவதà¯à®¤à®¿à®²à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³ MAX_FILE_SIZE directive ஠விட கூடியதà¯" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà®¾à®©à®¤à¯ பகà¯à®¤à®¿à®¯à®¾à®• மடà¯à®Ÿà¯à®®à¯‡ பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "எநà¯à®¤ கோபà¯à®ªà¯à®®à¯ பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "ஒர௠தறà¯à®•ாலிகமான கோபà¯à®ªà¯à®±à¯ˆà®¯à¯ˆ காணவிலà¯à®²à¯ˆ" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "வடà¯à®Ÿà®¿à®²à¯ எழà¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -84,151 +65,151 @@ msgstr "" msgid "Files" msgstr "கோபà¯à®ªà¯à®•ளà¯" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "பகிரபà¯à®ªà®Ÿà®¾à®¤à®¤à¯" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "அழிகà¯à®•" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "பெயரà¯à®®à®¾à®±à¯à®±à®®à¯" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} à®à®±à¯à®•னவே உளà¯à®³à®¤à¯" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "மாறà¯à®±à®¿à®Ÿà¯à®•" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "பெயரை பரிநà¯à®¤à¯à®°à¯ˆà®•à¯à®•" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "இரதà¯à®¤à¯ செயà¯à®•" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "à®®à¯à®©à¯ செயல௠நீகà¯à®•ம௠" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} ஆனத௠{old_name} இனால௠மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "பகிரபà¯à®ªà®Ÿà®¾à®¤à®¤à¯ {கோபà¯à®ªà¯à®•ளà¯}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "நீகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ {கோபà¯à®ªà¯à®•ளà¯}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®±à¯à®± பெயரà¯,'\\', '/', '<', '>', ':', '\"', '|', '?' மறà¯à®±à¯à®®à¯ '*' ஆகியன அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà®®à®¾à®Ÿà¯à®Ÿà®¾à®¤à¯." -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "அடைவ௠அலà¯à®²à®¤à¯ 0 bytes ஠கொணà¯à®Ÿà¯à®³à¯à®³à®¤à®¾à®²à¯ உஙà¯à®•ளà¯à®Ÿà¯ˆà®¯ கோபà¯à®ªà¯ˆ பதிவேறà¯à®± à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "பதிவேறà¯à®±à®²à¯ வழà¯" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "மூடà¯à®•" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "நிலà¯à®µà¯ˆà®¯à®¿à®²à¯à®³à¯à®³" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 கோபà¯à®ªà¯ பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®•ிறதà¯" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{எணà¯à®£à®¿à®•à¯à®•ை} கோபà¯à®ªà¯à®•ள௠பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®•ினà¯à®±à®¤à¯" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "பதிவேறà¯à®±à®²à¯ இரதà¯à®¤à¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "கோபà¯à®ªà¯ பதிவேறà¯à®±à®®à¯ செயலà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯ உளà¯à®³à®¤à¯. இநà¯à®¤à®ªà¯ பகà¯à®•தà¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ வெறியேறà¯à®µà®¤à®¾à®©à®¤à¯ பதிவேறà¯à®±à®²à¯ˆ இரதà¯à®¤à¯ செயà¯à®¯à¯à®®à¯." -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL வெறà¯à®®à¯ˆà®¯à®¾à®• இரà¯à®•à¯à®•à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{எணà¯à®£à®¿à®•à¯à®•ை} கோபà¯à®ªà¯à®•ள௠வரà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "வரà¯à®Ÿà¯à®®à¯ போதான வழà¯" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "பெயரà¯" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "அளவà¯" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 கோபà¯à®ªà¯à®±à¯ˆ" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{எணà¯à®£à®¿à®•à¯à®•ை} கோபà¯à®ªà¯à®±à¯ˆà®•ளà¯" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 கோபà¯à®ªà¯" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{எணà¯à®£à®¿à®•à¯à®•ை} கோபà¯à®ªà¯à®•ளà¯" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "பதிவேறà¯à®±à¯à®•" + #: templates/admin.php:5 msgid "File handling" msgstr "கோபà¯à®ªà¯ கையாளà¯à®¤à®²à¯" @@ -277,32 +258,40 @@ msgstr "கோபà¯à®ªà¯à®±à¯ˆ" msgid "From link" msgstr "இணைபà¯à®ªà®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "பதிவேறà¯à®±à®²à¯ˆ இரதà¯à®¤à¯ செயà¯à®•" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "இஙà¯à®•௠ஒனà¯à®±à¯à®®à¯ இலà¯à®²à¯ˆ. à®à®¤à®¾à®µà®¤à¯ பதிவேறà¯à®±à¯à®•!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "பதிவிறகà¯à®•à¯à®•" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "பதிவேறà¯à®±à®²à¯ மிகபà¯à®ªà¯†à®°à®¿à®¯à®¤à¯" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "கோபà¯à®ªà¯à®•ள௠வரà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®•ினà¯à®±à®©, தயவà¯à®šà¯†à®¯à¯à®¤à¯ காதà¯à®¤à®¿à®°à¯à®™à¯à®•ளà¯." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "தறà¯à®ªà¯‹à®¤à¯ வரà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®ªà®µà¯ˆ" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/ta_LK/files_trashbin.po b/l10n/ta_LK/files_trashbin.po new file mode 100644 index 00000000000..6699d6ca960 --- /dev/null +++ b/l10n/ta_LK/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/ta_LK/settings.po b/l10n/ta_LK/settings.po index 841dd03141b..2aaf1554459 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -88,7 +88,7 @@ msgstr "செயலறà¯à®±à®¤à®¾à®•à¯à®•à¯à®•" msgid "Saving..." msgstr "இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•" -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "_மொழி_பெயரà¯_" @@ -100,15 +100,15 @@ msgstr "உஙà¯à®•ளà¯à®Ÿà¯ˆà®¯ செயலியை சேரà¯à®•à¯à®•" msgid "More Apps" msgstr "மேலதிக செயலிகளà¯" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "செயலி ஒனà¯à®±à¯ˆ தெரிவà¯à®šà¯†à®¯à¯à®•" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "apps.owncloud.com இல௠செயலி பகà¯à®•தà¯à®¤à¯ˆ பாரà¯à®•à¯à®•" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"அனà¯à®®à®¤à®¿à®ªà¯à®ªà®¤à¯à®¤à®¿à®°à®®à¯\"></span>-அனà¯à®®à®¤à®¿ பெறà¯à®± <span class=\"ஆசிரியரà¯\"></span>" @@ -157,7 +157,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯" @@ -227,11 +227,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "பெயரà¯" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "கà¯à®´à¯à®•à¯à®•ளà¯" @@ -243,26 +243,38 @@ msgstr "உரà¯à®µà®¾à®•à¯à®•à¯à®•" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "மறà¯à®±à®µà¯ˆ" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "கà¯à®´à¯ நிரà¯à®µà®¾à®•ி" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "அழிகà¯à®•" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index 753402f2141..f045b7f0344 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-01-23 00:05+0100\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,24 +17,24 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -79,59 +79,135 @@ msgstr "" msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "" -#: js/js.js:706 +#: js/js.js:762 msgid "seconds ago" msgstr "" -#: js/js.js:707 +#: js/js.js:763 msgid "1 minute ago" msgstr "" -#: js/js.js:708 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:709 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:710 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:711 +#: js/js.js:767 msgid "today" msgstr "" -#: js/js.js:712 +#: js/js.js:768 msgid "yesterday" msgstr "" -#: js/js.js:713 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:714 +#: js/js.js:770 msgid "last month" msgstr "" -#: js/js.js:715 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:716 +#: js/js.js:772 msgid "months ago" msgstr "" -#: js/js.js:717 +#: js/js.js:773 msgid "last year" msgstr "" -#: js/js.js:718 +#: js/js.js:774 msgid "years ago" msgstr "" @@ -161,8 +237,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "" @@ -174,122 +250,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a href=" +"\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "" @@ -441,87 +536,11 @@ msgstr "" msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Sunday" -msgstr "" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Monday" -msgstr "" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Thursday" -msgstr "" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Friday" -msgstr "" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Saturday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "January" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "February" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "March" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "April" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "May" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "June" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "July" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "August" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "September" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "October" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "November" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "December" -msgstr "" - -#: templates/layout.guest.php:41 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index 535c86fc44b..c85bf1abbef 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-01-23 00:05+0100\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,65 +17,46 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -83,151 +64,151 @@ msgstr "" msgid "Files" msgstr "" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "" + #: templates/admin.php:5 msgid "File handling" msgstr "" @@ -276,32 +257,40 @@ msgstr "" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot index b0174b4df0d..c417aac9728 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-01-23 00:05+0100\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot index 0b141e370d5..61d11f8c814 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-01-23 00:05+0100\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -25,11 +25,11 @@ msgstr "" msgid "Error configuring Dropbox storage" msgstr "" -#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 +#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:41 msgid "Grant access" msgstr "" -#: js/dropbox.js:73 js/google.js:72 +#: js/dropbox.js:73 js/google.js:73 msgid "Fill out all required fields" msgstr "" @@ -37,17 +37,17 @@ msgstr "" msgid "Please provide a valid Dropbox app key and secret." msgstr "" -#: js/google.js:26 js/google.js:73 js/google.js:78 +#: js/google.js:26 js/google.js:74 js/google.js:79 msgid "Error configuring Google Drive storage" msgstr "" -#: lib/config.php:434 +#: lib/config.php:405 msgid "" "<b>Warning:</b> \"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 "" "<b>Warning:</b> 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 5291a185d3d..faa73d04bf1 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-01-23 00:05+0100\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -25,24 +25,24 @@ msgstr "" msgid "Submit" msgstr "" -#: templates/public.php:17 +#: templates/public.php:9 #, php-format msgid "%s shared the folder %s with you" msgstr "" -#: templates/public.php:19 +#: templates/public.php:11 #, php-format msgid "%s shared the file %s with you" msgstr "" -#: templates/public.php:22 templates/public.php:38 +#: templates/public.php:14 templates/public.php:30 msgid "Download" msgstr "" -#: templates/public.php:37 +#: templates/public.php:29 msgid "No preview available for" msgstr "" -#: templates/public.php:43 +#: templates/public.php:35 msgid "web services under your control" msgstr "" diff --git a/l10n/templates/files_trashbin.pot b/l10n/templates/files_trashbin.pot new file mode 100644 index 00000000000..b9480bd03c7 --- /dev/null +++ b/l10n/templates/files_trashbin.pot @@ -0,0 +1,58 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/templates/files_versions.pot b/l10n/templates/files_versions.pot index 0fd775d5518..fde4a367dc0 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-01-23 00:05+0100\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot index d9c2c443876..b8c44b6184b 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-01-23 00:05+0100\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -41,23 +41,23 @@ msgstr "" 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 "" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index 89ce02d3933..37e3dd004a7 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-01-23 00:05+0100\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -87,7 +87,7 @@ msgstr "" msgid "Saving..." msgstr "" -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "" @@ -99,15 +99,15 @@ msgstr "" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "" "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -157,7 +157,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "" @@ -226,11 +226,11 @@ msgid "" "General Public License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "" @@ -242,26 +242,38 @@ msgstr "" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "" diff --git a/l10n/templates/user_ldap.pot b/l10n/templates/user_ldap.pot index 03c8c9e73c1..5ad61de25c4 100644 --- a/l10n/templates/user_ldap.pot +++ b/l10n/templates/user_ldap.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-01-23 00:05+0100\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot index 63897bf14b5..d6f4d1f018a 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-01-23 00:05+0100\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/th_TH/core.po b/l10n/th_TH/core.po index e9fe1ca9c9e..15c2ea22914 100644 --- a/l10n/th_TH/core.po +++ b/l10n/th_TH/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-01-23 00:05+0100\n" -"PO-Revision-Date: 2013-01-22 01:02+0000\n" -"Last-Translator: AriesAnywhere Anywhere <ariesanywhere@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -19,24 +19,24 @@ msgstr "" "Language: th_TH\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "ผู้ใช้งาน %s ได้à¹à¸Šà¸£à¹Œà¹„ฟล์ให้à¸à¸±à¸šà¸„ุณ" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "ผู้ใช้งาน %s ได้à¹à¸Šà¸£à¹Œà¹‚ฟลเดà¸à¸£à¹Œà¹ƒà¸«à¹‰à¸à¸±à¸šà¸„ุณ" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "ผู้ใช้งาน %s ได้à¹à¸Šà¸£à¹Œà¹„ฟล์ \"%s\" ให้à¸à¸±à¸šà¸„ุณ à¹à¸¥à¸°à¸„ุณสามารถสามารถดาวน์โหลดไฟล์ดังà¸à¸¥à¹ˆà¸²à¸§à¹„ด้จาà¸à¸—ี่นี่: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -81,59 +81,135 @@ msgstr "ยังไม่ได้เลืà¸à¸à¸«à¸¡à¸§à¸”หมู่ที msgid "Error removing %s from favorites." msgstr "เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดในà¸à¸²à¸£à¸¥à¸š %s à¸à¸à¸à¸ˆà¸²à¸à¸£à¸²à¸¢à¸à¸²à¸£à¹‚ปรด" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "ตั้งค่า" -#: js/js.js:706 +#: js/js.js:762 msgid "seconds ago" msgstr "วินาที à¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" -#: js/js.js:707 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 นาทีà¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" -#: js/js.js:708 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} นาทีà¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" -#: js/js.js:709 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 ชั่วโมงà¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" -#: js/js.js:710 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} ชั่วโมงà¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" -#: js/js.js:711 +#: js/js.js:767 msgid "today" msgstr "วันนี้" -#: js/js.js:712 +#: js/js.js:768 msgid "yesterday" msgstr "เมื่à¸à¸§à¸²à¸™à¸™à¸µà¹‰" -#: js/js.js:713 +#: js/js.js:769 msgid "{days} days ago" msgstr "{day} วันà¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" -#: js/js.js:714 +#: js/js.js:770 msgid "last month" msgstr "เดืà¸à¸™à¸—ี่à¹à¸¥à¹‰à¸§" -#: js/js.js:715 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} เดืà¸à¸™à¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" -#: js/js.js:716 +#: js/js.js:772 msgid "months ago" msgstr "เดืà¸à¸™ ที่ผ่านมา" -#: js/js.js:717 +#: js/js.js:773 msgid "last year" msgstr "ปีที่à¹à¸¥à¹‰à¸§" -#: js/js.js:718 +#: js/js.js:774 msgid "years ago" msgstr "ปี ที่ผ่านมา" @@ -163,8 +239,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "พบข้à¸à¸œà¸´à¸”พลาด" @@ -176,122 +252,141 @@ msgstr "ชื่à¸à¸‚à¸à¸‡à¹à¸à¸›à¸¢à¸±à¸‡à¹„ม่ได้รับà¸à¸² msgid "The required file {file} is not installed!" msgstr "ไฟล์ {file} ซึ่งเป็นไฟล์ที่จำเป็นต้à¸à¸‡à¹„ด้รับà¸à¸²à¸£à¸•ิดตั้งไว้à¸à¹ˆà¸à¸™ ยังไม่ได้ถูà¸à¸•ิดตั้ง" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดในà¸à¸²à¸£à¸¢à¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹à¸Šà¸£à¹Œà¸‚้à¸à¸¡à¸¹à¸¥" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดในà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸ªà¸´à¸—ธิ์à¸à¸²à¸£à¹€à¸‚้าใช้งาน" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "ได้à¹à¸Šà¸£à¹Œà¹ƒà¸«à¹‰à¸à¸±à¸šà¸„ุณ à¹à¸¥à¸°à¸à¸¥à¸¸à¹ˆà¸¡ {group} โดย {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "ถูà¸à¹à¸Šà¸£à¹Œà¹ƒà¸«à¹‰à¸à¸±à¸šà¸„ุณโดย {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "à¹à¸Šà¸£à¹Œà¹ƒà¸«à¹‰à¸à¸±à¸š" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "à¹à¸Šà¸£à¹Œà¸”้วยลิงà¸à¹Œ" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "ใส่รหัสผ่านไว้" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "รหัสผ่าน" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "ส่งลิงà¸à¹Œà¹ƒà¸«à¹‰à¸—างà¸à¸µà¹€à¸¡à¸¥" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "ส่ง" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "à¸à¸³à¸«à¸™à¸”วันที่หมดà¸à¸²à¸¢à¸¸" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "วันที่หมดà¸à¸²à¸¢à¸¸" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "à¹à¸Šà¸£à¹Œà¸œà¹ˆà¸²à¸™à¸—างà¸à¸µà¹€à¸¡à¸¥" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "ไม่พบบุคคลที่ต้à¸à¸‡à¸à¸²à¸£" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "ไม่à¸à¸™à¸¸à¸à¸²à¸•ให้à¹à¸Šà¸£à¹Œà¸‚้à¸à¸¡à¸¹à¸¥à¸‹à¹‰à¸³à¹„ด้" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "ได้à¹à¸Šà¸£à¹Œ {item} ให้à¸à¸±à¸š {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹à¸Šà¸£à¹Œ" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "สามารถà¹à¸à¹‰à¹„ข" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "ระดับควบคุมà¸à¸²à¸£à¹€à¸‚้าใช้งาน" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "สร้าง" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "à¸à¸±à¸žà¹€à¸”ท" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "ลบ" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "à¹à¸Šà¸£à¹Œ" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "ใส่รหัสผ่านไว้" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดในà¸à¸²à¸£à¸¢à¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸•ั้งค่าวันที่หมดà¸à¸²à¸¢à¸¸" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดในà¸à¸²à¸£à¸•ั้งค่าวันที่หมดà¸à¸²à¸¢à¸¸" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¹ˆà¸‡..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "ส่งà¸à¸µà¹€à¸¡à¸¥à¹Œà¹à¸¥à¹‰à¸§" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "à¸à¸²à¸£à¸à¸±à¸žà¹€à¸”ทไม่เป็นผลสำเร็จ à¸à¸£à¸¸à¸“าà¹à¸ˆà¹‰à¸‡à¸›à¸±à¸à¸«à¸²à¸—ี่เà¸à¸´à¸”ขึ้นไปยัง <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">คà¸à¸¡à¸¡à¸¹à¸™à¸´à¸•ี้ผู้ใช้งาน ownCloud</a>" + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "à¸à¸²à¸£à¸à¸±à¸žà¹€à¸”ทเสร็จเรียบร้à¸à¸¢à¹à¸¥à¹‰à¸§ à¸à¸³à¸¥à¸±à¸‡à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹€à¸ªà¹‰à¸™à¸—างไปที่ ownCloud à¸à¸¢à¸¹à¹ˆà¹ƒà¸™à¸‚ณะนี้" + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "รีเซ็ตรหัสผ่าน ownCloud" @@ -443,87 +538,11 @@ msgstr "Database host" msgid "Finish setup" msgstr "ติดตั้งเรียบร้à¸à¸¢à¹à¸¥à¹‰à¸§" -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Sunday" -msgstr "วันà¸à¸²à¸—ิตย์" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Monday" -msgstr "วันจันทร์" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "วันà¸à¸±à¸‡à¸„าร" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "วันพุธ" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Thursday" -msgstr "วันพฤหัสบดี" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Friday" -msgstr "วันศุà¸à¸£à¹Œ" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Saturday" -msgstr "วันเสาร์" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "January" -msgstr "มà¸à¸£à¸²à¸„ม" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "February" -msgstr "à¸à¸¸à¸¡à¸ าพันธ์" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "March" -msgstr "มีนาคม" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "April" -msgstr "เมษายน" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "May" -msgstr "พฤษภาคม" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "June" -msgstr "มิถุนายน" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "July" -msgstr "à¸à¸£à¸à¸à¸²à¸„ม" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "August" -msgstr "สิงหาคม" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "September" -msgstr "à¸à¸±à¸™à¸¢à¸²à¸¢à¸™" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "October" -msgstr "ตุลาคม" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "November" -msgstr "พฤศจิà¸à¸²à¸¢à¸™" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "December" -msgstr "ธันวาคม" - -#: templates/layout.guest.php:41 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "web services under your control" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "à¸à¸à¸à¸ˆà¸²à¸à¸£à¸°à¸šà¸š" diff --git a/l10n/th_TH/files.po b/l10n/th_TH/files.po index 691310546f2..f6d46e93f2d 100644 --- a/l10n/th_TH/files.po +++ b/l10n/th_TH/files.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 01:13+0000\n" -"Last-Translator: AriesAnywhere Anywhere <ariesanywhere@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -19,65 +19,46 @@ msgstr "" "Language: th_TH\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "à¸à¸±à¸žà¹‚หลด" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "ไม่สามารถย้าย %s ได้ - ไฟล์ที่ใช้ชื่à¸à¸™à¸µà¹‰à¸¡à¸µà¸à¸¢à¸¹à¹ˆà¹à¸¥à¹‰à¸§" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "ไม่สามารถย้าย %s ได้" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "ไม่สามารถเปลี่ยนชื่à¸à¹„ฟล์ได้" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "ยังไม่มีไฟล์ใดที่ถูà¸à¸à¸±à¸žà¹‚หลด เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดที่ไม่ทราบสาเหตุ" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "ไม่มีข้à¸à¸œà¸´à¸”พลาดใดๆ ไฟล์ถูà¸à¸à¸±à¸žà¹‚หลดเรียบร้à¸à¸¢à¹à¸¥à¹‰à¸§" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "ขนาดไฟล์ที่à¸à¸±à¸žà¹‚หลดมีขนาดเà¸à¸´à¸™ upload_max_filesize ที่ระบุไว้ใน php.ini" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "ไฟล์ที่à¸à¸±à¸žà¹‚หลดมีขนาดเà¸à¸´à¸™à¸„ำสั่ง MAX_FILE_SIZE ที่ระบุเà¸à¸²à¹„ว้ในรูปà¹à¸šà¸šà¸„ำสั่งในภาษา HTML" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "ไฟล์ที่à¸à¸±à¸žà¹‚หลดยังไม่ได้ถูà¸à¸à¸±à¸žà¹‚หลดà¸à¸¢à¹ˆà¸²à¸‡à¸ªà¸¡à¸šà¸¹à¸£à¸“์" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "ยังไม่มีไฟล์ที่ถูà¸à¸à¸±à¸žà¹‚หลด" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "à¹à¸Ÿà¹‰à¸¡à¹€à¸à¸à¸ªà¸²à¸£à¸Šà¸±à¹ˆà¸§à¸„ราวเà¸à¸´à¸”à¸à¸²à¸£à¸ªà¸¹à¸à¸«à¸²à¸¢" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "เขียนข้à¸à¸¡à¸¹à¸¥à¸¥à¸‡à¹à¸œà¹ˆà¸™à¸”ิสà¸à¹Œà¸¥à¹‰à¸¡à¹€à¸«à¸¥à¸§" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "มีพื้นที่เหลืà¸à¹„ม่เพียงพà¸" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "ไดเร็à¸à¸—à¸à¸£à¸µà¹ˆà¹„ม่ถูà¸à¸•้à¸à¸‡" @@ -85,151 +66,151 @@ msgstr "ไดเร็à¸à¸—à¸à¸£à¸µà¹ˆà¹„ม่ถูà¸à¸•้à¸à¸‡" msgid "Files" msgstr "ไฟล์" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹à¸Šà¸£à¹Œà¸‚้à¸à¸¡à¸¹à¸¥" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "ลบ" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "เปลี่ยนชื่à¸" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} มีà¸à¸¢à¸¹à¹ˆà¹à¸¥à¹‰à¸§à¹ƒà¸™à¸£à¸°à¸šà¸š" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "à¹à¸—นที่" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "à¹à¸™à¸°à¸™à¸³à¸Šà¸·à¹ˆà¸" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "ยà¸à¹€à¸¥à¸´à¸" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "à¹à¸—นที่ {new_name} à¹à¸¥à¹‰à¸§" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "เลิà¸à¸—ำ" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "à¹à¸—นที่ {new_name} ด้วย {old_name} à¹à¸¥à¹‰à¸§" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹à¸Šà¸£à¹Œà¹à¸¥à¹‰à¸§ {files} ไฟล์" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "ลบไฟล์à¹à¸¥à¹‰à¸§ {files} ไฟล์" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' เป็นชื่à¸à¹„ฟล์ที่ไม่ถูà¸à¸•้à¸à¸‡" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "ชื่à¸à¹„ฟล์ไม่สามารถเว้นว่างได้" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "ชื่à¸à¸—ี่ใช้ไม่ถูà¸à¸•้à¸à¸‡, '\\', '/', '<', '>', ':', '\"', '|', '?' à¹à¸¥à¸° '*' ไม่ได้รับà¸à¸™à¸¸à¸à¸²à¸•ให้ใช้งานได้" -#: js/files.js:204 +#: 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 "พื้นที่จัดเà¸à¹‡à¸šà¸‚้à¸à¸¡à¸¹à¸¥à¸‚à¸à¸‡à¸„ุณใà¸à¸¥à¹‰à¹€à¸•็มà¹à¸¥à¹‰à¸§ ({usedSpacePercent}%)" + +#: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸•รียมดาวน์โหลดข้à¸à¸¡à¸¹à¸¥ หาà¸à¹„ฟล์มีขนาดใหà¸à¹ˆ à¸à¸²à¸ˆà¹ƒà¸Šà¹‰à¹€à¸§à¸¥à¸²à¸ªà¸±à¸à¸„รู่" -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "ไม่สามารถà¸à¸±à¸žà¹‚หลดไฟล์ขà¸à¸‡à¸„ุณได้ เนื่à¸à¸‡à¸ˆà¸²à¸à¹„ฟล์ดังà¸à¸¥à¹ˆà¸²à¸§à¹€à¸›à¹‡à¸™à¹„ดเร็à¸à¸—à¸à¸£à¸µà¹ˆà¸«à¸£à¸·à¸à¸¡à¸µà¸‚นาด 0 ไบต์" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดในà¸à¸²à¸£à¸à¸±à¸žà¹‚หลด" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "ปิด" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "à¸à¸¢à¸¹à¹ˆà¸£à¸°à¸«à¸§à¹ˆà¸²à¸‡à¸”ำเนินà¸à¸²à¸£" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸à¸±à¸žà¹‚หลดไฟล์ 1 ไฟล์" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸à¸±à¸žà¹‚หลด {count} ไฟล์" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "à¸à¸²à¸£à¸à¸±à¸žà¹‚หลดถูà¸à¸¢à¸à¹€à¸¥à¸´à¸" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "à¸à¸²à¸£à¸à¸±à¸žà¹‚หลดไฟล์à¸à¸³à¸¥à¸±à¸‡à¸à¸¢à¸¹à¹ˆà¹ƒà¸™à¸£à¸°à¸«à¸§à¹ˆà¸²à¸‡à¸”ำเนินà¸à¸²à¸£ à¸à¸²à¸£à¸à¸à¸à¸ˆà¸²à¸à¸«à¸™à¹‰à¸²à¹€à¸§à¹‡à¸šà¸™à¸µà¹‰à¸ˆà¸°à¸—ำให้à¸à¸²à¸£à¸à¸±à¸žà¹‚หลดถูà¸à¸¢à¸à¹€à¸¥à¸´à¸" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL ไม่สามารถเว้นว่างได้" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "ชื่à¸à¹‚ฟลเดà¸à¸£à¹Œà¹„ม่ถูà¸à¸•้à¸à¸‡ à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™ 'à¹à¸Šà¸£à¹Œ' สงวนไว้สำหรับ Owncloud เท่านั้น" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "สà¹à¸à¸™à¹„ฟล์à¹à¸¥à¹‰à¸§ {count} ไฟล์" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "พบข้à¸à¸œà¸´à¸”พลาดในระหว่างà¸à¸²à¸£à¸ªà¹à¸à¸™à¹„ฟล์" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "ชื่à¸" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "ขนาด" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "ปรับปรุงล่าสุด" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 โฟลเดà¸à¸£à¹Œ" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} โฟลเดà¸à¸£à¹Œ" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 ไฟล์" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} ไฟล์" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "à¸à¸±à¸žà¹‚หลด" + #: templates/admin.php:5 msgid "File handling" msgstr "à¸à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¹„ฟล์" @@ -278,32 +259,40 @@ msgstr "à¹à¸Ÿà¹‰à¸¡à¹€à¸à¸à¸ªà¸²à¸£" msgid "From link" msgstr "จาà¸à¸¥à¸´à¸‡à¸à¹Œ" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸à¸±à¸žà¹‚หลด" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "ยังไม่มีไฟล์ใดๆà¸à¸¢à¸¹à¹ˆà¸—ี่นี่ à¸à¸£à¸¸à¸“าà¸à¸±à¸žà¹‚หลดไฟล์!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "ดาวน์โหลด" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "ไฟล์ที่à¸à¸±à¸žà¹‚หลดมีขนาดใหà¸à¹ˆà¹€à¸à¸´à¸™à¹„ป" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "ไฟล์à¸à¸³à¸¥à¸±à¸‡à¸à¸¢à¸¹à¹ˆà¸£à¸°à¸«à¸§à¹ˆà¸²à¸‡à¸à¸²à¸£à¸ªà¹à¸à¸™, à¸à¸£à¸¸à¸“ารà¸à¸ªà¸±à¸à¸„รู่." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "ไฟล์ที่à¸à¸³à¸¥à¸±à¸‡à¸ªà¹à¸à¸™à¸à¸¢à¸¹à¹ˆà¸‚ณะนี้" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/th_TH/files_encryption.po b/l10n/th_TH/files_encryption.po index 747fd64f1a5..e76ad6347f8 100644 --- a/l10n/th_TH/files_encryption.po +++ b/l10n/th_TH/files_encryption.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# AriesAnywhere Anywhere <ariesanywhere@gmail.com>, 2012. +# AriesAnywhere Anywhere <ariesanywhere@gmail.com>, 2012-2013. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-24 00:06+0100\n" +"PO-Revision-Date: 2013-01-23 15:03+0000\n" +"Last-Translator: AriesAnywhere Anywhere <ariesanywhere@gmail.com>\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" @@ -22,53 +22,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +msgstr "à¸à¸£à¸¸à¸“าสลับไปที่โปรà¹à¸à¸£à¸¡à¹„คลเà¸à¸™à¸•์ ownCloud ขà¸à¸‡à¸„ุณ à¹à¸¥à¹‰à¸§à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¸ªà¸³à¸«à¸£à¸±à¸šà¸à¸²à¸£à¹€à¸‚้ารหัสเพื่à¸à¹à¸›à¸¥à¸‡à¸‚้à¸à¸¡à¸¹à¸¥à¹ƒà¸«à¹‰à¹€à¸ªà¸£à¹‡à¸ˆà¸ªà¸¡à¸šà¸¹à¸£à¸“์" #: js/settings-personal.js:17 msgid "switched to client side encryption" -msgstr "" +msgstr "สลับไปใช้à¸à¸²à¸£à¹€à¸‚้ารหัสจาà¸à¹‚ปรà¹à¸à¸£à¸¡à¹„คลเà¸à¸™à¸•์" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +msgstr "เปลี่ยนรหัสผ่านสำหรับเข้ารหัสไปเป็นรหัสผ่านสำหรับà¸à¸²à¸£à¹€à¸‚้าสู่ระบบ" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +msgstr "à¸à¸£à¸¸à¸“าตรวจสà¸à¸šà¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¸‚à¸à¸‡à¸„ุณà¹à¸¥à¹‰à¸§à¸¥à¸à¸‡à¹ƒà¸«à¸¡à¹ˆà¸à¸µà¸à¸„รั้ง" #: js/settings-personal.js:25 msgid "Could not change your file encryption password to your login password" -msgstr "" +msgstr "ไม่สามารถเปลี่ยนรหัสผ่านสำหรับà¸à¸²à¸£à¹€à¸‚้ารหัสไฟล์ขà¸à¸‡à¸„ุณไปเป็นรหัสผ่านสำหรับà¸à¸²à¸£à¹€à¸‚้าสู่ระบบขà¸à¸‡à¸„ุณได้" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "เลืà¸à¸à¸£à¸¹à¸›à¹à¸šà¸šà¸à¸²à¸£à¹€à¸‚้ารหัส:" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "à¸à¸²à¸£à¹€à¸‚้ารหัสด้วยโปรà¹à¸à¸£à¸¡à¹„คลเà¸à¸™à¸•์ (ปลà¸à¸”ภัยที่สุด à¹à¸•่จะทำให้คุณไม่สามารถเข้าถึงข้à¸à¸¡à¸¹à¸¥à¸•่างๆจาà¸à¸«à¸™à¹‰à¸²à¸ˆà¸à¹€à¸§à¹‡à¸šà¹„ซต์ได้)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "à¸à¸²à¸£à¹€à¸‚้ารหัสจาà¸à¸—างà¸à¸±à¹ˆà¸‡à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸à¸£à¹Œ (à¸à¸™à¸¸à¸à¸²à¸•ให้คุณเข้าถึงไฟล์ขà¸à¸‡à¸„ุณจาà¸à¸«à¸™à¹‰à¸²à¸ˆà¸à¹€à¸§à¹‡à¸šà¹„ซต์ à¹à¸¥à¸°à¹‚ปรà¹à¸à¸£à¸¡à¹„คลเà¸à¸™à¸•์จาà¸à¹€à¸„รื่à¸à¸‡à¹€à¸”สà¸à¹Œà¸—็à¸à¸›à¹„ด้)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "ไม่ต้à¸à¸‡ (ไม่มีà¸à¸²à¸£à¹€à¸‚้ารหัสเลย)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "ข้à¸à¸„วามสำคัà¸: หลังจาà¸à¸—ี่คุณได้เลืà¸à¸à¸£à¸¹à¸›à¹à¸šà¸šà¸à¸²à¸£à¹€à¸‚้ารหัสà¹à¸¥à¹‰à¸§ จะไม่สามารถเปลี่ยนà¸à¸¥à¸±à¸šà¸¡à¸²à¹ƒà¸«à¸¡à¹ˆà¹„ด้à¸à¸µà¸" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "ให้ผู้ใช้งานเลืà¸à¸à¹€à¸à¸‡ (ปล่à¸à¸¢à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸•ัดสินใจเà¸à¸‡)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/th_TH/files_trashbin.po b/l10n/th_TH/files_trashbin.po new file mode 100644 index 00000000000..d9dc1b0c7ac --- /dev/null +++ b/l10n/th_TH/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: th_TH\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/th_TH/settings.po b/l10n/th_TH/settings.po index 9e7676e802b..13466b5fa06 100644 --- a/l10n/th_TH/settings.po +++ b/l10n/th_TH/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-01-23 00:05+0100\n" -"PO-Revision-Date: 2013-01-22 00:59+0000\n" -"Last-Translator: AriesAnywhere Anywhere <ariesanywhere@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -90,7 +90,7 @@ msgstr "เปิดใช้งาน" msgid "Saving..." msgstr "à¸à¸³à¸¥à¸±à¸‡à¸šà¸±à¸™à¸—ึุà¸à¸‚้à¸à¸¡à¸¹à¸¥..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "ภาษาไทย" @@ -102,15 +102,15 @@ msgstr "เพิ่มà¹à¸à¸›à¸‚à¸à¸‡à¸„ุณ" msgid "More Apps" msgstr "à¹à¸à¸›à¸¯à¸à¸·à¹ˆà¸™à¹€à¸žà¸´à¹ˆà¸¡à¹€à¸•ิม" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "เลืà¸à¸ App" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "ดูหน้าà¹à¸à¸žà¸žà¸¥à¸´à¹€à¸„ชั่นที่ apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-ลิขสิทธิ์à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹‚ดย <span class=\"author\"></span>" @@ -159,7 +159,7 @@ msgstr "ดาวน์โหลดโปรà¹à¸à¸£à¸¡à¹„คลเà¸à¸™à¸•์ msgid "Download iOS Client" msgstr "ดาวน์โหลดโปรà¹à¸à¸£à¸¡à¹„คลเà¸à¸™à¸•์สำหรับ iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "รหัสผ่าน" @@ -229,11 +229,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "พัฒนาโดย the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ชุมชนผู้ใช้งาน ownCloud</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">ซà¸à¸£à¹Œà¸ªà¹‚ค้ด</a>à¸à¸¢à¸¹à¹ˆà¸ ายใต้สัà¸à¸à¸²à¸à¸™à¸¸à¸à¸²à¸•ขà¸à¸‡ <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "ชื่à¸" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "à¸à¸¥à¸¸à¹ˆà¸¡" @@ -245,26 +245,38 @@ msgstr "สร้าง" msgid "Default Storage" msgstr "พื้นที่จำà¸à¸±à¸”ข้à¸à¸¡à¸¹à¸¥à¹€à¸£à¸´à¹ˆà¸¡à¸•้น" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "ไม่จำà¸à¸±à¸”จำนวน" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "à¸à¸·à¹ˆà¸™à¹†" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "ผู้ดูà¹à¸¥à¸à¸¥à¸¸à¹ˆà¸¡" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "พื้นที่จัดเà¸à¹‡à¸šà¸‚้à¸à¸¡à¸¹à¸¥" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "ลบ" diff --git a/l10n/tr/core.po b/l10n/tr/core.po index b35d17c7b5d..e6a8df2a9ad 100644 --- a/l10n/tr/core.po +++ b/l10n/tr/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-01-23 00:05+0100\n" -"PO-Revision-Date: 2013-01-22 23:04+0000\n" -"Last-Translator: ismail yenigül <ismail.yenigul@surgate.com>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -22,24 +22,24 @@ msgstr "" "Language: tr\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "%s kullanıcısı sizinle bir dosyayı paylaÅŸtı" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "%s kullanıcısı sizinle bir dizini paylaÅŸtı" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "%s kullanıcısı \"%s\" dosyasını sizinle paylaÅŸtı. %s adresinden indirilebilir" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -84,59 +84,135 @@ msgstr "Silmek için bir kategori seçilmedi" msgid "Error removing %s from favorites." msgstr "%s favorilere çıkarılırken hata oluÅŸtu" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Pazar" + +#: js/config.php:32 +msgid "Monday" +msgstr "Pazartesi" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Salı" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "ÇarÅŸamba" + +#: js/config.php:32 +msgid "Thursday" +msgstr "PerÅŸembe" + +#: js/config.php:32 +msgid "Friday" +msgstr "Cuma" + +#: js/config.php:32 +msgid "Saturday" +msgstr "Cumartesi" + +#: js/config.php:33 +msgid "January" +msgstr "Ocak" + +#: js/config.php:33 +msgid "February" +msgstr "Åžubat" + +#: js/config.php:33 +msgid "March" +msgstr "Mart" + +#: js/config.php:33 +msgid "April" +msgstr "Nisan" + +#: js/config.php:33 +msgid "May" +msgstr "Mayıs" + +#: js/config.php:33 +msgid "June" +msgstr "Haziran" + +#: js/config.php:33 +msgid "July" +msgstr "Temmuz" + +#: js/config.php:33 +msgid "August" +msgstr "AÄŸustos" + +#: js/config.php:33 +msgid "September" +msgstr "Eylül" + +#: js/config.php:33 +msgid "October" +msgstr "Ekim" + +#: js/config.php:33 +msgid "November" +msgstr "Kasım" + +#: js/config.php:33 +msgid "December" +msgstr "Aralık" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Ayarlar" -#: js/js.js:706 +#: js/js.js:762 msgid "seconds ago" msgstr "saniye önce" -#: js/js.js:707 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 dakika önce" -#: js/js.js:708 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} dakika önce" -#: js/js.js:709 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 saat önce" -#: js/js.js:710 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} saat önce" -#: js/js.js:711 +#: js/js.js:767 msgid "today" msgstr "bugün" -#: js/js.js:712 +#: js/js.js:768 msgid "yesterday" msgstr "dün" -#: js/js.js:713 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} gün önce" -#: js/js.js:714 +#: js/js.js:770 msgid "last month" msgstr "geçen ay" -#: js/js.js:715 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} ay önce" -#: js/js.js:716 +#: js/js.js:772 msgid "months ago" msgstr "ay önce" -#: js/js.js:717 +#: js/js.js:773 msgid "last year" msgstr "geçen yıl" -#: js/js.js:718 +#: js/js.js:774 msgid "years ago" msgstr "yıl önce" @@ -166,8 +242,8 @@ msgid "The object type is not specified." msgstr "Nesne türü belirtilmemiÅŸ." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Hata" @@ -179,122 +255,141 @@ msgstr "uygulama adı belirtilmedi." msgid "The required file {file} is not installed!" msgstr "İhtiyaç duyulan {file} dosyası kurulu deÄŸil." -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "PaylaÅŸ" + +#: 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 "Paylaşım sırasında hata " -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Paylaşım iptal ediliyorken hata" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "İzinleri deÄŸiÅŸtirirken hata oluÅŸtu" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr " {owner} tarafından sizinle ve {group} ile paylaÅŸtırılmış" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "{owner} trafından sizinle paylaÅŸtırıldı" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "ile PaylaÅŸ" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "BaÄŸlantı ile paylaÅŸ" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Åžifre korunması" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Parola" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "KiÅŸiye e-posta linki" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "Gönder" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Son kullanma tarihini ayarla" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Son kullanım tarihi" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Eposta ile paylaÅŸ" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "KiÅŸi bulunamadı" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Tekrar paylaÅŸmaya izin verilmiyor" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr " {item} içinde {user} ile paylaşılanlarlar" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Paylaşılmayan" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "düzenleyebilir" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "eriÅŸim kontrolü" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "oluÅŸtur" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "güncelle" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "sil" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "paylaÅŸ" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Paralo korumalı" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Geçerlilik tarihi tanımlama kaldırma hatası" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Geçerlilik tarihi tanımlama hatası" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "Gönderiliyor..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Eposta gönderildi" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ownCloud parola sıfırlama" @@ -446,87 +541,11 @@ msgstr "Veritabanı sunucusu" msgid "Finish setup" msgstr "Kurulumu tamamla" -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Pazar" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Monday" -msgstr "Pazartesi" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Salı" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "ÇarÅŸamba" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Thursday" -msgstr "PerÅŸembe" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Friday" -msgstr "Cuma" - -#: templates/layout.guest.php:15 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Cumartesi" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "January" -msgstr "Ocak" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "February" -msgstr "Åžubat" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "March" -msgstr "Mart" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "April" -msgstr "Nisan" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "May" -msgstr "Mayıs" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "June" -msgstr "Haziran" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "July" -msgstr "Temmuz" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "August" -msgstr "AÄŸustos" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "September" -msgstr "Eylül" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "October" -msgstr "Ekim" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "November" -msgstr "Kasım" - -#: templates/layout.guest.php:16 templates/layout.user.php:18 -msgid "December" -msgstr "Aralık" - -#: templates/layout.guest.php:41 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "kontrolünüzdeki web servisleri" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Çıkış yap" diff --git a/l10n/tr/files.po b/l10n/tr/files.po index 6a8b2bf601b..773605dbba6 100644 --- a/l10n/tr/files.po +++ b/l10n/tr/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-01-23 00:05+0100\n" -"PO-Revision-Date: 2013-01-22 21:35+0000\n" -"Last-Translator: ismail yenigül <ismail.yenigul@surgate.com>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -23,65 +23,46 @@ msgstr "" "Language: tr\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Yükle" - -#: 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:24 -#, php-format -msgid "Could not move %s" -msgstr "%s taşınamadı" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "Dosya adı deÄŸiÅŸtirilemedi" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Dosya yüklenmedi. Bilinmeyen hata" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Bir hata yok, dosya baÅŸarıyla yüklendi" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "php.ini dosyasında upload_max_filesize ile belirtilen dosya yükleme sınırı aşıldı." -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Yüklenen dosya HTML formundaki MAX_FILE_SIZE sınırını aşıyor" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Yüklenen dosyanın sadece bir kısmı yüklendi" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Hiç dosya yüklenmedi" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Geçici bir klasör eksik" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Diske yazılamadı" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "Yeterli disk alanı yok" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "Geçersiz dizin." @@ -89,151 +70,151 @@ msgstr "Geçersiz dizin." msgid "Files" msgstr "Dosyalar" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Paylaşılmayan" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Sil" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "İsim deÄŸiÅŸtir." -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} zaten mevcut" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "deÄŸiÅŸtir" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "Öneri ad" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "iptal" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "deÄŸiÅŸtirilen {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "geri al" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} ismi {old_name} ile deÄŸiÅŸtirildi" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "paylaşılmamış {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "silinen {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' geçersiz dosya adı." -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "Dosya adı boÅŸ olamaz." -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Geçersiz isim, '\\', '/', '<', '>', ':', '\"', '|', '?' ve '*' karakterlerine izin verilmemektedir." -#: js/files.js:204 +#: 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 "İndirmeniz hazırlanıyor. Dosya büyük ise biraz zaman alabilir." -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Dosyanızın boyutu 0 byte olduÄŸundan veya bir dizin olduÄŸundan yüklenemedi" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Yükleme hatası" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Kapat" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Bekliyor" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 dosya yüklendi" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} dosya yükleniyor" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Yükleme iptal edildi." -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL boÅŸ olamaz." -#: js/files.js:565 +#: js/files.js:580 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:775 -msgid "{count} files scanned" -msgstr "{count} dosya tarandı" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "tararamada hata oluÅŸdu" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Ad" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Boyut" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "DeÄŸiÅŸtirilme" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 dizin" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} dizin" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 dosya" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} dosya" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Yükle" + #: templates/admin.php:5 msgid "File handling" msgstr "Dosya taşıma" @@ -282,32 +263,40 @@ msgstr "Klasör" msgid "From link" msgstr "BaÄŸlantıdan" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Yüklemeyi iptal et" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Burada hiçbir ÅŸey yok. BirÅŸeyler yükleyin!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "İndir" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Yüklemeniz çok büyük" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Yüklemeye çalıştığınız dosyalar bu sunucudaki maksimum yükleme boyutunu aşıyor." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Dosyalar taranıyor, lütfen bekleyin." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Güncel tarama" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/tr/files_trashbin.po b/l10n/tr/files_trashbin.po new file mode 100644 index 00000000000..03eb077131a --- /dev/null +++ b/l10n/tr/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/tr/settings.po b/l10n/tr/settings.po index 0e563c6d4f5..6712f5fe47f 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" @@ -91,7 +91,7 @@ msgstr "Etkin" msgid "Saving..." msgstr "Kaydediliyor..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__dil_adı__" @@ -103,15 +103,15 @@ msgstr "Uygulamanı Ekle" msgid "More Apps" msgstr "Daha fazla App" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Bir uygulama seçin" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Uygulamanın sayfasına apps.owncloud.com adresinden bakın " -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -160,7 +160,7 @@ msgstr "Android İstemcisini İndir" msgid "Download iOS Client" msgstr "iOS İstemcisini İndir" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Parola" @@ -230,11 +230,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "GeliÅŸtirilen Taraf<a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is altında lisanslanmıştır <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Ad" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Gruplar" @@ -246,26 +246,38 @@ msgstr "OluÅŸtur" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "DiÄŸer" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Yönetici Grubu " -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Sil" diff --git a/l10n/uk/core.po b/l10n/uk/core.po index 21be89f3a48..03b58445197 100644 --- a/l10n/uk/core.po +++ b/l10n/uk/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-01-18 00:03+0100\n" -"PO-Revision-Date: 2013-01-17 13:18+0000\n" -"Last-Translator: volodya327 <volodya327@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -22,24 +22,24 @@ 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/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "КориÑтувач %s поділивÑÑ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ з вами" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "КориÑтувач %s поділивÑÑ Ñ‚ÐµÐºÐ¾ÑŽ з вами" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "КориÑтувач %s поділивÑÑ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ \"%s\" з вами. Він доÑтупний Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð²Ñ–Ð´Ñи: %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -84,59 +84,135 @@ msgstr "Жодної категорії не обрано Ð´Ð»Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð msgid "Error removing %s from favorites." msgstr "Помилка при видалені %s із обраного." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "ÐалаштуваннÑ" -#: js/js.js:706 +#: js/js.js:762 msgid "seconds ago" msgstr "Ñекунди тому" -#: js/js.js:707 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 хвилину тому" -#: js/js.js:708 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} хвилин тому" -#: js/js.js:709 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 годину тому" -#: js/js.js:710 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} години тому" -#: js/js.js:711 +#: js/js.js:767 msgid "today" msgstr "Ñьогодні" -#: js/js.js:712 +#: js/js.js:768 msgid "yesterday" msgstr "вчора" -#: js/js.js:713 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} днів тому" -#: js/js.js:714 +#: js/js.js:770 msgid "last month" msgstr "минулого міÑÑцÑ" -#: js/js.js:715 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} міÑÑців тому" -#: js/js.js:716 +#: js/js.js:772 msgid "months ago" msgstr "міÑÑці тому" -#: js/js.js:717 +#: js/js.js:773 msgid "last year" msgstr "минулого року" -#: js/js.js:718 +#: js/js.js:774 msgid "years ago" msgstr "роки тому" @@ -166,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Помилка" @@ -179,122 +255,141 @@ msgstr "Ðе визначено ім'Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸." msgid "The required file {file} is not installed!" msgstr "Ðеобхідний файл {file} не вÑтановлено!" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Помилка під Ñ‡Ð°Ñ Ð²Ñ–Ð´Ð¼Ñ–Ð½Ð¸ публікації" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Помилка при зміні повноважень" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr " {owner} опублікував Ð´Ð»Ñ Ð’Ð°Ñ Ñ‚Ð° Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¸ {group}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "{owner} опублікував Ð´Ð»Ñ Ð’Ð°Ñ" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Опублікувати длÑ" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Опублікувати через поÑиланнÑ" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "ЗахиÑтити паролем" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Пароль" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "Ел. пошта належить Пану" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "ÐадіÑлати" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Ð’Ñтановити термін дії" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Термін дії" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Опублікувати через Ел. пошту:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Жодної людини не знайдено" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Пере-Ð¿ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð½Ðµ дозволÑєтьÑÑ" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Опубліковано {item} Ð´Ð»Ñ {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Заборонити доÑтуп" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "може редагувати" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "контроль доÑтупу" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "Ñтворити" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "оновити" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "видалити" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "опублікувати" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Захищено паролем" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Помилка при відміні терміна дії" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Помилка при вÑтановленні терміна дії" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "ÐадÑиланнÑ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Ел. пошта надіÑлана" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ ownCloud" @@ -446,87 +541,11 @@ msgstr "ХоÑÑ‚ бази даних" msgid "Finish setup" msgstr "Завершити налаштуваннÑ" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "ÐеділÑ" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Понеділок" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Вівторок" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Середа" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Четвер" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "П'ÑтницÑ" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Субота" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Січень" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Лютий" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Березень" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Квітень" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Травень" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Червень" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Липень" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Серпень" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "ВереÑень" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Жовтень" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "ЛиÑтопад" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Грудень" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "веб-ÑÐµÑ€Ð²Ñ–Ñ Ð¿Ñ–Ð´ вашим контролем" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Вихід" diff --git a/l10n/uk/files.po b/l10n/uk/files.po index 5b1e3c16286..7f4b486f210 100644 --- a/l10n/uk/files.po +++ b/l10n/uk/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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" @@ -20,65 +20,46 @@ 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:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Відвантажити" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "Ðе завантажено жодного файлу. Ðевідома помилка" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Файл уÑпішно вивантажено без помилок." -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "Розмір Ð·Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” upload_max_filesize параметра в php.ini: " -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Розмір відвантаженого файлу перевищує директиву MAX_FILE_SIZE вказану в HTML формі" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Файл відвантажено лише чаÑтково" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Ðе відвантажено жодного файлу" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "ВідÑутній тимчаÑовий каталог" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "ÐевдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати на диÑк" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -86,151 +67,151 @@ msgstr "" msgid "Files" msgstr "Файли" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Заборонити доÑтуп" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Видалити" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Перейменувати" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} вже Ñ–Ñнує" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "заміна" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "запропонуйте назву" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "відміна" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "замінено {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "відмінити" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "замінено {new_name} на {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "неопубліковано {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "видалено {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Ðевірне ім'Ñ, '\\', '/', '<', '>', ':', '\"', '|', '?' та '*' не дозволені." -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Ðеможливо завантажити ваш файл тому, що він тека або файл розміром 0 байт" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Помилка завантаженнÑ" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Закрити" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "ОчікуваннÑ" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 файл завантажуєтьÑÑ" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} файлів завантажуєтьÑÑ" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾." -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "ВиконуєтьÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ. Ð—Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñ†Ñ–Ñ”Ñ— Ñторінки приведе до відміни завантаженнÑ." -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL не може бути пуÑтим." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} файлів проÑкановано" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "помилка при Ñкануванні" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Ім'Ñ" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "Розмір" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Змінено" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 папка" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} папок" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 файл" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} файлів" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Відвантажити" + #: templates/admin.php:5 msgid "File handling" msgstr "Робота з файлами" @@ -279,32 +260,40 @@ msgstr "Папка" msgid "From link" msgstr "З поÑиланнÑ" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Перервати завантаженнÑ" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Тут нічого немає. Відвантажте що-небудь!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Завантажити" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Файл занадто великий" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Файли ÑкануютьÑÑ, зачекайте, будь-лаÑка." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Поточне ÑкануваннÑ" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/uk/files_trashbin.po b/l10n/uk/files_trashbin.po new file mode 100644 index 00000000000..3dbbe27d588 --- /dev/null +++ b/l10n/uk/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"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/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/uk/settings.po b/l10n/uk/settings.po index 5d40f09facf..561d4be190c 100644 --- a/l10n/uk/settings.po +++ b/l10n/uk/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-01-18 00:03+0100\n" -"PO-Revision-Date: 2013-01-17 13:26+0000\n" -"Last-Translator: volodya327 <volodya327@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\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" @@ -90,7 +90,7 @@ msgstr "Включити" msgid "Saving..." msgstr "Зберігаю..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__language_name__" @@ -102,15 +102,15 @@ msgstr "Додати Ñвою програму" msgid "More Apps" msgstr "Більше програм" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Вибрати додаток" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "ПереглÑньте Ñторінку програм на apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" @@ -159,7 +159,7 @@ msgstr "Завантажити клієнт Ð´Ð»Ñ Android" msgid "Download iOS Client" msgstr "Завантажити клієнт Ð´Ð»Ñ iOS" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Пароль" @@ -229,11 +229,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "Розроблено <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud громадою</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">вихідний код</a> має ліцензію <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Ім'Ñ" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Групи" @@ -245,26 +245,38 @@ msgstr "Створити" msgid "Default Storage" msgstr "Ñховище за замовчуваннÑм" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "Ðеобмежено" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Інше" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "ÐдмініÑтратор групи" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "Сховище" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Видалити" diff --git a/l10n/vi/core.po b/l10n/vi/core.po index e86e7e5911f..7434016d8e5 100644 --- a/l10n/vi/core.po +++ b/l10n/vi/core.po @@ -7,13 +7,13 @@ # <mattheu.9x@gmail.com>, 2012. # <mattheu_9x@yahoo.com>, 2012. # Son Nguyen <sonnghit@gmail.com>, 2012. -# SÆ¡n Nguyá»…n <sonnghit@gmail.com>, 2012. +# SÆ¡n Nguyá»…n <sonnghit@gmail.com>, 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" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" @@ -22,29 +22,29 @@ msgstr "" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" -msgstr "" +msgstr "%s chia sẻ táºp tin nà y cho bạn" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" -msgstr "" +msgstr "%s chia sẻ thư mục nà y cho bạn" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" -msgstr "" +msgstr "Ngưá»i dùng %s chia sẻ táºp tin \"%s\" cho bạn .Bạn có thể tải tại đây : %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " "here: %s" -msgstr "" +msgstr "Ngưá»i dùng %s chia sẻ thư mục \"%s\" cho bạn .Bạn có thể tải tại đây : %s" #: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 msgid "Category type not provided." @@ -84,59 +84,135 @@ msgstr "Không có thể loại nà o được chá»n để xóa." msgid "Error removing %s from favorites." msgstr "Lá»—i xóa %s từ mục yêu thÃch." -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: js/config.php:32 +msgid "Sunday" +msgstr "Chá»§ nháºt" + +#: js/config.php:32 +msgid "Monday" +msgstr "Thứ 2" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "Thứ 3" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "Thứ 4" + +#: js/config.php:32 +msgid "Thursday" +msgstr "Thứ 5" + +#: js/config.php:32 +msgid "Friday" +msgstr "Thứ " + +#: js/config.php:32 +msgid "Saturday" +msgstr "Thứ 7" + +#: js/config.php:33 +msgid "January" +msgstr "Tháng 1" + +#: js/config.php:33 +msgid "February" +msgstr "Tháng 2" + +#: js/config.php:33 +msgid "March" +msgstr "Tháng 3" + +#: js/config.php:33 +msgid "April" +msgstr "Tháng 4" + +#: js/config.php:33 +msgid "May" +msgstr "Tháng 5" + +#: js/config.php:33 +msgid "June" +msgstr "Tháng 6" + +#: js/config.php:33 +msgid "July" +msgstr "Tháng 7" + +#: js/config.php:33 +msgid "August" +msgstr "Tháng 8" + +#: js/config.php:33 +msgid "September" +msgstr "Tháng 9" + +#: js/config.php:33 +msgid "October" +msgstr "Tháng 10" + +#: js/config.php:33 +msgid "November" +msgstr "Tháng 11" + +#: js/config.php:33 +msgid "December" +msgstr "Tháng 12" + +#: js/js.js:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "Cà i đặt" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "và i giây trước" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 phút trước" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} phút trước" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 giá» trước" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} giá» trước" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "hôm nay" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "hôm qua" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} ngà y trước" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "tháng trước" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} tháng trước" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "tháng trước" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "năm trước" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "năm trước" @@ -166,8 +242,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "Lá»—i" @@ -179,122 +255,141 @@ msgstr "Tên ứng dụng không được chỉ định." msgid "The required file {file} is not installed!" msgstr "Táºp tin cần thiết {file} không được cà i đặt!" -#: js/share.js:124 js/share.js:594 +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "Chia sẻ" + +#: 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 "Lá»—i trong quá trình chia sẻ" -#: js/share.js:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "Lá»—i trong quá trình gỡ chia sẻ" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "Lá»—i trong quá trình phân quyá»n" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "Äã được chia sẽ vá»›i bạn và nhóm {group} bởi {owner}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "Äã được chia sẽ bởi {owner}" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "Chia sẻ vá»›i" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "Chia sẻ vá»›i liên kết" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "Máºt khẩu bảo vệ" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "Máºt khẩu" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" -msgstr "" +msgstr "Gởi" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "Äặt ngà y kết thúc" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "Ngà y kết thúc" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "Chia sẻ thông qua email" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "Không tìm thấy ngưá»i nà o" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "Chia sẻ lại không được cho phép" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "Äã được chia sẽ trong {item} vá»›i {user}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "Gỡ bá» chia sẻ" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "có thể chỉnh sá»a" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "quản lý truy cáºp" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "tạo" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "cáºp nháºt" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "xóa" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "chia sẻ" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "Máºt khẩu bảo vệ" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "Lá»—i không thiết láºp ngà y kết thúc" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "Lá»—i cấu hình ngà y kết thúc" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." -msgstr "" +msgstr "Äang gởi ..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "Cáºp nháºt không thà nh công . Vui lòng thông báo đến <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\"> Cá»™ng đồng ownCloud </a>." + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "Cáºp nháºt thà nh công .Hệ thống sẽ đưa bạn tá»›i ownCloud." + #: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Khôi phục máºt khẩu Owncloud " @@ -446,87 +541,11 @@ msgstr "Database host" msgid "Finish setup" msgstr "Cà i đặt hoà n tất" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "Chá»§ nháºt" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "Thứ 2" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "Thứ 3" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "Thứ 4" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "Thứ 5" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "Thứ " - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "Thứ 7" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "Tháng 1" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "Tháng 2" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "Tháng 3" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "Tháng 4" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "Tháng 5" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "Tháng 6" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "Tháng 7" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "Tháng 8" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "Tháng 9" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "Tháng 10" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "Tháng 11" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "Tháng 12" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 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:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "Äăng xuất" diff --git a/l10n/vi/files.po b/l10n/vi/files.po index f2e3a48fce4..c7458d06103 100644 --- a/l10n/vi/files.po +++ b/l10n/vi/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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" @@ -21,65 +21,46 @@ msgstr "" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "Tải lên" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 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" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "Không có lá»—i, các táºp tin đã được tải lên thà nh công" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "KÃch thước những táºp tin tải lên vượt quá MAX_FILE_SIZE đã được quy định" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "Táºp tin tải lên má»›i chỉ tải lên được má»™t phần" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "Không có táºp tin nà o được tải lên" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "Không tìm thấy thư mục tạm" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "Không thể ghi " -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -87,151 +68,151 @@ msgstr "" msgid "Files" msgstr "Táºp tin" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "Không chia sẽ" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Xóa" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "Sá»a tên" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} đã tồn tại" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "thay thế" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "tên gợi ý" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "há»§y" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "đã thay thế {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "lùi lại" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "đã thay thế {new_name} bằng {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "há»§y chia sẽ {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "đã xóa {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "Tên không hợp lệ, '\\', '/', '<', '>', ':', '\"', '|', '?' và '*' thì không được phép dùng." -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "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" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "Tải lên lá»—i" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "Äóng" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Chá»" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 tệp tin Ä‘ang được tải lên" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} táºp tin Ä‘ang tải lên" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "Há»§y tải lên" -#: js/files.js:486 +#: js/files.js:502 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:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL không được để trống." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} táºp tin đã được quét" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "lá»—i trong khi quét" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "Tên" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "KÃch cỡ" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "Thay đổi" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 thư mục" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} thư mục" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 táºp tin" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} táºp tin" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "Tải lên" + #: templates/admin.php:5 msgid "File handling" msgstr "Xá» lý táºp tin" @@ -280,32 +261,40 @@ msgstr "Thư mục" msgid "From link" msgstr "Từ liên kết" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "Há»§y upload" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "Không có gì ở đây .Hãy tải lên má»™t cái gì đó !" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "Tải xuống" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "Táºp tin tải lên quá lá»›n" -#: templates/index.php:104 +#: templates/index.php:107 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "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á»§ ." -#: templates/index.php:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "Táºp tin Ä‘ang được quét ,vui lòng chá»." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "Hiện tại Ä‘ang quét" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/vi/files_trashbin.po b/l10n/vi/files_trashbin.po new file mode 100644 index 00000000000..41ce4eb64ec --- /dev/null +++ b/l10n/vi/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/vi/settings.po b/l10n/vi/settings.po index d7c48f81a4b..bac645946c1 100644 --- a/l10n/vi/settings.po +++ b/l10n/vi/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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" @@ -93,7 +93,7 @@ msgstr "Báºt" msgid "Saving..." msgstr "Äang tiến hà nh lưu ..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__Ngôn ngữ___" @@ -105,15 +105,15 @@ msgstr "Thêm ứng dụng cá»§a bạn" msgid "More Apps" msgstr "Nhiá»u ứng dụng hÆ¡n" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "Chá»n má»™t ứng dụng" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "Xem nhiá»u ứng dụng hÆ¡n tại apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-Giấy phép được cấp bởi <span class=\"author\"></span>" @@ -162,7 +162,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Máºt khẩu" @@ -232,11 +232,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "ÄÆ°á»£c phát triển bởi <a href=\"http://ownCloud.org/contact\" target=\"_blank\">cá»™ng đồng ownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">mã nguồn </a> đã được cấp phép theo chuẩn <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "Tên" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "Nhóm" @@ -248,26 +248,38 @@ msgstr "Tạo" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "Khác" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "Nhóm quản trị" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "Xóa" diff --git a/l10n/zh_CN.GB2312/core.po b/l10n/zh_CN.GB2312/core.po index 0e81b175791..089c03e33c8 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -19,24 +19,24 @@ msgstr "" "Language: zh_CN.GB2312\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -81,59 +81,135 @@ msgstr "没有选者è¦åˆ 除的分类." msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "设置" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "ç§’å‰" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 分钟å‰" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} 分钟å‰" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "今天" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "昨天" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} 天å‰" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "上个月" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "月å‰" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "去年" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "å¹´å‰" @@ -163,8 +239,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "错误" @@ -176,122 +252,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "å–æ¶ˆåˆ†äº«å‡ºé”™" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "å˜æ›´æƒé™å‡ºé”™" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "ç”± {owner} 与您和 {group} 群组分享" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "ç”± {owner} 与您分享" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "分享" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "分享链接" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "密ç ä¿æŠ¤" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "密ç " -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "设置失效日期" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "失效日期" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "通过电å邮件分享:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "æŸ¥æ— æ¤äºº" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "ä¸å…许é‡å¤åˆ†äº«" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "å·²ç»ä¸Ž {user} 在 {item} ä¸åˆ†äº«" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "å–æ¶ˆåˆ†äº«" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "å¯ç¼–辑" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "访问控制" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "创建" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "æ›´æ–°" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "åˆ é™¤" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "分享" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "密ç ä¿æŠ¤" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "å–æ¶ˆè®¾ç½®å¤±æ•ˆæ—¥æœŸå‡ºé”™" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "设置失效日期出错" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ç§æœ‰äº‘密ç é‡ç½®" @@ -443,87 +538,11 @@ msgstr "æ•°æ®åº“主机" msgid "Finish setup" msgstr "完æˆå®‰è£…" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "星期天" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "星期一" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "星期二" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "星期三" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "星期四" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "星期五" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "星期å…" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "一月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "二月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "三月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "四月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "五月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "å…æœˆ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "七月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "八月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "乿œˆ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "åæœˆ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "å一月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "å二月" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "ä½ æŽ§åˆ¶ä¸‹çš„ç½‘ç»œæœåŠ¡" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "注销" diff --git a/l10n/zh_CN.GB2312/files.po b/l10n/zh_CN.GB2312/files.po index 84a0e059f37..8ad4ff2a597 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -19,65 +19,46 @@ msgstr "" "Language: zh_CN.GB2312\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "ä¸Šä¼ " - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "æ²¡æœ‰ä¸Šä¼ æ–‡ä»¶ã€‚æœªçŸ¥é”™è¯¯" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "没有任何错误,æ–‡ä»¶ä¸Šä¼ æˆåŠŸäº†" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "ä¸Šä¼ çš„æ–‡ä»¶è¶…è¿‡äº†HTMLè¡¨å•æŒ‡å®šçš„MAX_FILE_SIZE" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "æ–‡ä»¶åªæœ‰éƒ¨åˆ†è¢«ä¸Šä¼ " -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "æ²¡æœ‰ä¸Šä¼ å®Œæˆçš„æ–‡ä»¶" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "丢失了一个临时文件夹" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "写ç£ç›˜å¤±è´¥" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -85,151 +66,151 @@ msgstr "" msgid "Files" msgstr "文件" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "å–æ¶ˆå…±äº«" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "åˆ é™¤" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "é‡å‘½å" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} å·²å˜åœ¨" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "替æ¢" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "推èåç§°" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "å–æ¶ˆ" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "å·²æ›¿æ¢ {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "撤销" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "已用 {old_name} æ›¿æ¢ {new_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "未分享的 {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "å·²åˆ é™¤çš„ {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "ä¸èƒ½ä¸Šä¼ ä½ æŒ‡å®šçš„æ–‡ä»¶,å¯èƒ½å› 为它是个文件夹或者大å°ä¸º0" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "ä¸Šä¼ é”™è¯¯" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "å…³é—" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "Pending" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 个文件æ£åœ¨ä¸Šä¼ " -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} 个文件æ£åœ¨ä¸Šä¼ " -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "ä¸Šä¼ å–æ¶ˆäº†" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "文件æ£åœ¨ä¸Šä¼ 。关é—页é¢ä¼šå–æ¶ˆä¸Šä¼ ã€‚" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "网å€ä¸èƒ½ä¸ºç©ºã€‚" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} 个文件已扫æ" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "扫æå‡ºé”™" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "åå—" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "大å°" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "修改日期" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 个文件夹" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} 个文件夹" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 个文件" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} 个文件" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "ä¸Šä¼ " + #: templates/admin.php:5 msgid "File handling" msgstr "文件处ç†ä¸" @@ -278,32 +259,40 @@ msgstr "文件夹" msgid "From link" msgstr "æ¥è‡ªé“¾æŽ¥" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "å–æ¶ˆä¸Šä¼ " -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "这里没有东西.ä¸Šä¼ ç‚¹ä»€ä¹ˆ!" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "下载" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "ä¸Šä¼ çš„æ–‡ä»¶å¤ªå¤§äº†" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "æ£åœ¨æ‰«ææ–‡ä»¶,请ç¨å€™." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "æ£åœ¨æ‰«æ" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/zh_CN.GB2312/files_trashbin.po b/l10n/zh_CN.GB2312/files_trashbin.po new file mode 100644 index 00000000000..4da5c5879dd --- /dev/null +++ b/l10n/zh_CN.GB2312/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN.GB2312\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/zh_CN.GB2312/settings.po b/l10n/zh_CN.GB2312/settings.po index 78eea9c8908..17e86539b78 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -89,7 +89,7 @@ msgstr "å¯ç”¨" msgid "Saving..." msgstr "ä¿å˜ä¸..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "Chinese" @@ -101,15 +101,15 @@ msgstr "æ·»åŠ ä½ çš„åº”ç”¨ç¨‹åº" msgid "More Apps" msgstr "更多应用" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "选择一个程åº" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "在owncloud.com上查看应用程åº" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>授æƒåè®® <span class=\"author\"></span>" @@ -158,7 +158,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "密ç " @@ -228,11 +228,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "ç”± <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud 社区</a>å¼€å‘,<a href=\"https://github.com/owncloud\" target=\"_blank\">sæºä»£ç </a> 以 <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> 许å¯åè®®å‘布。" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "åå—" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "组" @@ -244,26 +244,38 @@ msgstr "新建" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "å…¶ä»–çš„" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "群组管ç†å‘˜" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "åˆ é™¤" diff --git a/l10n/zh_CN/core.po b/l10n/zh_CN/core.po index 727cb475164..054c70f7faa 100644 --- a/l10n/zh_CN/core.po +++ b/l10n/zh_CN/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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 14:38+0000\n" -"Last-Translator: leonfeng <rainofchaos@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,24 +23,24 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "用户 %s 与您共享了一个文件" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "用户 %s 与您共享了一个文件夹" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "用户 %s 与您共享了文件\"%s\"。文件下载地å€ï¼š%s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -85,59 +85,135 @@ msgstr "没有选择è¦åˆ 除的类别" msgid "Error removing %s from favorites." msgstr "从收è—夹ä¸ç§»é™¤%s时出错。" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "设置" -#: js/js.js:706 +#: js/js.js:762 msgid "seconds ago" msgstr "ç§’å‰" -#: js/js.js:707 +#: js/js.js:763 msgid "1 minute ago" msgstr "一分钟å‰" -#: js/js.js:708 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} 分钟å‰" -#: js/js.js:709 +#: js/js.js:765 msgid "1 hour ago" msgstr "1å°æ—¶å‰" -#: js/js.js:710 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} å°æ—¶å‰" -#: js/js.js:711 +#: js/js.js:767 msgid "today" msgstr "今天" -#: js/js.js:712 +#: js/js.js:768 msgid "yesterday" msgstr "昨天" -#: js/js.js:713 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} 天å‰" -#: js/js.js:714 +#: js/js.js:770 msgid "last month" msgstr "上月" -#: js/js.js:715 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} 月å‰" -#: js/js.js:716 +#: js/js.js:772 msgid "months ago" msgstr "月å‰" -#: js/js.js:717 +#: js/js.js:773 msgid "last year" msgstr "去年" -#: js/js.js:718 +#: js/js.js:774 msgid "years ago" msgstr "å¹´å‰" @@ -167,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "错误" @@ -180,122 +256,141 @@ msgstr "未指定Appå称。" msgid "The required file {file} is not installed!" msgstr "所需文件{file}未安装ï¼" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "å–æ¶ˆå…±äº«æ—¶å‡ºé”™" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "修改æƒé™æ—¶å‡ºé”™" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "{owner}共享给您åŠ{group}组" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr " {owner}与您共享" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "共享" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "共享链接" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "密ç ä¿æŠ¤" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "密ç " -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "å‘é€é“¾æŽ¥åˆ°ä¸ªäºº" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "å‘é€" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "设置过期日期" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "过期日期" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "通过Email共享" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "未找到æ¤äºº" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "ä¸å…许二次共享" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "在{item} 与 {user}共享。" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "å–æ¶ˆå…±äº«" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "å¯ä»¥ä¿®æ”¹" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "访问控制" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "创建" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "æ›´æ–°" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "åˆ é™¤" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "共享" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "密ç å·²å—ä¿æŠ¤" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "å–æ¶ˆè®¾ç½®è¿‡æœŸæ—¥æœŸæ—¶å‡ºé”™" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "设置过期日期时出错" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "æ£åœ¨å‘é€..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "邮件已å‘é€" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "é‡ç½® ownCloud 密ç " @@ -447,87 +542,11 @@ msgstr "æ•°æ®åº“主机" msgid "Finish setup" msgstr "安装完æˆ" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "星期日" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "星期一" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "星期二" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "星期三" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "星期四" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "星期五" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "星期å…" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "一月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "二月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "三月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "四月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "五月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "å…æœˆ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "七月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "八月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "乿œˆ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "åæœˆ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "å一月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "å二月" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "由您掌控的网络æœåŠ¡" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "注销" diff --git a/l10n/zh_CN/files.po b/l10n/zh_CN/files.po index c5a96d20133..3ccaa537b38 100644 --- a/l10n/zh_CN/files.po +++ b/l10n/zh_CN/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-01-23 00:05+0100\n" -"PO-Revision-Date: 2013-01-21 23:17+0000\n" -"Last-Translator: Xuetian Weng <wengxt@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,65 +24,46 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "ä¸Šä¼ " - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "æ— æ³•ç§»åŠ¨ %s - åŒå文件已å˜åœ¨" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "æ— æ³•ç§»åŠ¨ %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "æ— æ³•é‡å‘½å文件" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "æ²¡æœ‰æ–‡ä»¶è¢«ä¸Šä¼ ã€‚æœªçŸ¥é”™è¯¯" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "没有å‘ç”Ÿé”™è¯¯ï¼Œæ–‡ä»¶ä¸Šä¼ æˆåŠŸã€‚" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "ä¸Šä¼ æ–‡ä»¶å¤§å°å·²è¶…过php.iniä¸upload_max_filesize所规定的值" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "ä¸Šä¼ çš„æ–‡ä»¶è¶…è¿‡äº†åœ¨HTML 表å•䏿Œ‡å®šçš„MAX_FILE_SIZE" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "åªä¸Šä¼ 了文件的一部分" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "æ–‡ä»¶æ²¡æœ‰ä¸Šä¼ " -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "缺少临时目录" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "写入ç£ç›˜å¤±è´¥" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "没有足够å¯ç”¨ç©ºé—´" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "æ— æ•ˆæ–‡ä»¶å¤¹ã€‚" @@ -90,151 +71,151 @@ msgstr "æ— æ•ˆæ–‡ä»¶å¤¹ã€‚" msgid "Files" msgstr "文件" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "å–æ¶ˆåˆ†äº«" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "åˆ é™¤" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "é‡å‘½å" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} å·²å˜åœ¨" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "替æ¢" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "建议åç§°" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "å–æ¶ˆ" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "æ›¿æ¢ {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "撤销" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "已将 {old_name}æ›¿æ¢æˆ {new_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "å–æ¶ˆäº†å…±äº« {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "åˆ é™¤äº† {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' æ˜¯ä¸€ä¸ªæ— æ•ˆçš„æ–‡ä»¶å。" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "文件åä¸èƒ½ä¸ºç©ºã€‚" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "æ— æ•ˆå称,'\\', '/', '<', '>', ':', '\"', '|', '?' å’Œ '*' ä¸è¢«å…许使用。" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "æ— æ³•ä¸Šä¼ æ–‡ä»¶ï¼Œå› ä¸ºå®ƒæ˜¯ä¸€ä¸ªç›®å½•æˆ–è€…å¤§å°ä¸º 0 å—节" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "ä¸Šä¼ é”™è¯¯" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "å…³é—" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "æ“作ç‰å¾…ä¸" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1ä¸ªæ–‡ä»¶ä¸Šä¼ ä¸" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} ä¸ªæ–‡ä»¶ä¸Šä¼ ä¸" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "ä¸Šä¼ å·²å–æ¶ˆ" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "文件æ£åœ¨ä¸Šä¼ ä¸ã€‚现在离开æ¤é¡µä¼šå¯¼è‡´ä¸Šä¼ åŠ¨ä½œè¢«å–æ¶ˆã€‚" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URLä¸èƒ½ä¸ºç©º" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "æ— æ•ˆæ–‡ä»¶å¤¹å。'共享' 是 Owncloud 预留的文件夹å。" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} 个文件已扫æã€‚" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "æ‰«ææ—¶å‡ºé”™" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "åç§°" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "大å°" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "修改日期" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1个文件夹" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} 个文件夹" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 个文件" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} 个文件" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "ä¸Šä¼ " + #: templates/admin.php:5 msgid "File handling" msgstr "文件处ç†" @@ -283,32 +264,40 @@ msgstr "文件夹" msgid "From link" msgstr "æ¥è‡ªé“¾æŽ¥" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "å–æ¶ˆä¸Šä¼ " -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "è¿™é‡Œè¿˜ä»€ä¹ˆéƒ½æ²¡æœ‰ã€‚ä¸Šä¼ äº›ä¸œè¥¿å§ï¼" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "下载" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "ä¸Šä¼ æ–‡ä»¶è¿‡å¤§" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "文件æ£åœ¨è¢«æ‰«æï¼Œè¯·ç¨å€™ã€‚" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "当剿‰«æ" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/zh_CN/files_trashbin.po b/l10n/zh_CN/files_trashbin.po new file mode 100644 index 00000000000..68de848c4aa --- /dev/null +++ b/l10n/zh_CN/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/zh_CN/settings.po b/l10n/zh_CN/settings.po index a0a2353d6d4..a7d5f860adc 100644 --- a/l10n/zh_CN/settings.po +++ b/l10n/zh_CN/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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 12:51+0000\n" -"Last-Translator: Dianjin Wang <1132321739qq@gmail.com>\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -93,7 +93,7 @@ msgstr "å¯ç”¨" msgid "Saving..." msgstr "æ£åœ¨ä¿å˜" -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "ç®€ä½“ä¸æ–‡" @@ -105,15 +105,15 @@ msgstr "æ·»åŠ åº”ç”¨" msgid "More Apps" msgstr "更多应用" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "选择一个应用" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "查看在 app.owncloud.com 的应用程åºé¡µé¢" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-æ ¸å‡†ï¼š <span class=\"author\"></span>" @@ -162,7 +162,7 @@ msgstr "下载 Android 客户端" msgid "Download iOS Client" msgstr "下载 iOS 客户端" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "密ç " @@ -232,11 +232,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "ç”±<a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud社区</a>å¼€å‘, <a href=\"https://github.com/owncloud\" target=\"_blank\">æºä»£ç </a>在<a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>许å¯è¯ä¸‹å‘布。" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "åç§°" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "组" @@ -248,26 +248,38 @@ msgstr "创建" msgid "Default Storage" msgstr "默认å˜å‚¨" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "æ— é™" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "其它" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "组管ç†å‘˜" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "å˜å‚¨" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "åˆ é™¤" diff --git a/l10n/zh_HK/core.po b/l10n/zh_HK/core.po index d58ec8a3911..d6ed7429225 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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-30 00:23+0100\n" +"PO-Revision-Date: 2013-01-29 23:23+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -18,24 +18,24 @@ msgstr "" "Language: zh_HK\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "" -#: ajax/share.php:88 +#: 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:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -80,59 +80,135 @@ msgstr "" msgid "Error removing %s from favorites." msgstr "" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "" @@ -162,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "" @@ -175,122 +251,141 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "" -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "" @@ -442,87 +537,11 @@ msgstr "" msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "" diff --git a/l10n/zh_HK/files.po b/l10n/zh_HK/files.po index 56f4ec9477e..3a61b47c5ad 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-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -17,65 +17,46 @@ msgstr "" "Language: zh_HK\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "" @@ -83,151 +64,151 @@ msgstr "" msgid "Files" msgstr "" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "" - -#: js/filelist.js:290 -msgid "deleted {files}" +#: js/filelist.js:280 +msgid "perform delete operation" msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "" -#: js/files.js:204 +#: 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:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "" -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "" + #: templates/admin.php:5 msgid "File handling" msgstr "" @@ -276,32 +257,40 @@ msgstr "" msgid "From link" msgstr "" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/zh_HK/files_trashbin.po b/l10n/zh_HK/files_trashbin.po new file mode 100644 index 00000000000..d6fa5fa8285 --- /dev/null +++ b/l10n/zh_HK/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_HK\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/zh_HK/settings.po b/l10n/zh_HK/settings.po index db5e3f915b9..9523f29e80b 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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -87,7 +87,7 @@ msgstr "" msgid "Saving..." msgstr "" -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "" @@ -99,15 +99,15 @@ msgstr "" msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "" @@ -156,7 +156,7 @@ msgstr "" msgid "Download iOS Client" msgstr "" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "" @@ -226,11 +226,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "" @@ -242,26 +242,38 @@ msgstr "" msgid "Default Storage" msgstr "" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "" diff --git a/l10n/zh_TW/core.po b/l10n/zh_TW/core.po index a331ba2944f..787cdb9d00b 100644 --- a/l10n/zh_TW/core.po +++ b/l10n/zh_TW/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-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-30 23:40+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -21,24 +21,24 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/share.php:84 +#: ajax/share.php:85 #, php-format msgid "User %s shared a file with you" msgstr "用戶 %s 與您分享了一個檔案" -#: ajax/share.php:86 +#: ajax/share.php:87 #, php-format msgid "User %s shared a folder with you" msgstr "用戶 %s 與您分享了一個資料夾" -#: ajax/share.php:88 +#: ajax/share.php:89 #, php-format msgid "" "User %s shared the file \"%s\" with you. It is available for download here: " "%s" msgstr "用戶 %s 與您分享了檔案 \"%s\" ,您å¯ä»¥å¾žé€™è£¡ä¸‹è¼‰å®ƒï¼š %s" -#: ajax/share.php:90 +#: ajax/share.php:91 #, php-format msgid "" "User %s shared the folder \"%s\" with you. It is available for download " @@ -83,59 +83,135 @@ msgstr "æ²’æœ‰é¸æ“‡è¦åˆªé™¤çš„分類。" msgid "Error removing %s from favorites." msgstr "從最愛移除 %s 時發生錯誤。" -#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +#: 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:280 templates/layout.user.php:47 templates/layout.user.php:48 msgid "Settings" msgstr "è¨å®š" -#: js/js.js:711 +#: js/js.js:762 msgid "seconds ago" msgstr "幾秒å‰" -#: js/js.js:712 +#: js/js.js:763 msgid "1 minute ago" msgstr "1 分é˜å‰" -#: js/js.js:713 +#: js/js.js:764 msgid "{minutes} minutes ago" msgstr "{minutes} 分é˜å‰" -#: js/js.js:714 +#: js/js.js:765 msgid "1 hour ago" msgstr "1 個尿™‚å‰" -#: js/js.js:715 +#: js/js.js:766 msgid "{hours} hours ago" msgstr "{hours} å°æ™‚å‰" -#: js/js.js:716 +#: js/js.js:767 msgid "today" msgstr "今天" -#: js/js.js:717 +#: js/js.js:768 msgid "yesterday" msgstr "昨天" -#: js/js.js:718 +#: js/js.js:769 msgid "{days} days ago" msgstr "{days} 天å‰" -#: js/js.js:719 +#: js/js.js:770 msgid "last month" msgstr "上個月" -#: js/js.js:720 +#: js/js.js:771 msgid "{months} months ago" msgstr "{months} 個月å‰" -#: js/js.js:721 +#: js/js.js:772 msgid "months ago" msgstr "幾個月å‰" -#: js/js.js:722 +#: js/js.js:773 msgid "last year" msgstr "去年" -#: js/js.js:723 +#: js/js.js:774 msgid "years ago" msgstr "幾年å‰" @@ -165,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:135 js/share.js:142 js/share.js:554 -#: js/share.js:566 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 msgid "Error" msgstr "錯誤" @@ -178,122 +254,141 @@ msgstr "沒有指定 app å稱。" msgid "The required file {file} is not installed!" msgstr "æ²’æœ‰å®‰è£æ‰€éœ€çš„æª”案 {file} ï¼" -#: js/share.js:124 js/share.js:594 +#: 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:135 +#: js/share.js:152 msgid "Error while unsharing" msgstr "å–æ¶ˆåˆ†äº«æ™‚發生錯誤" -#: js/share.js:142 +#: js/share.js:159 msgid "Error while changing permissions" msgstr "ä¿®æ”¹æ¬Šé™æ™‚發生錯誤" -#: js/share.js:151 +#: js/share.js:168 msgid "Shared with you and the group {group} by {owner}" msgstr "ç”± {owner} 分享給您和 {group}" -#: js/share.js:153 +#: js/share.js:170 msgid "Shared with you by {owner}" msgstr "{owner} 已經和您分享" -#: js/share.js:158 +#: js/share.js:175 msgid "Share with" msgstr "與...分享" -#: js/share.js:163 +#: js/share.js:180 msgid "Share with link" msgstr "使用連çµåˆ†äº«" -#: js/share.js:166 +#: js/share.js:183 msgid "Password protect" msgstr "密碼ä¿è·" -#: js/share.js:168 templates/installation.php:44 templates/login.php:35 +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 msgid "Password" msgstr "密碼" -#: js/share.js:172 +#: js/share.js:189 msgid "Email link to person" msgstr "å°‡é€£çµ email 給別人" -#: js/share.js:173 +#: js/share.js:190 msgid "Send" msgstr "寄出" -#: js/share.js:177 +#: js/share.js:194 msgid "Set expiration date" msgstr "è¨ç½®åˆ°æœŸæ—¥" -#: js/share.js:178 +#: js/share.js:195 msgid "Expiration date" msgstr "到期日" -#: js/share.js:210 +#: js/share.js:227 msgid "Share via email:" msgstr "é€éŽ email 分享:" -#: js/share.js:212 +#: js/share.js:229 msgid "No people found" msgstr "沒有找到任何人" -#: js/share.js:239 +#: js/share.js:256 msgid "Resharing is not allowed" msgstr "ä¸å…è¨±é‡æ–°åˆ†äº«" -#: js/share.js:275 +#: js/share.js:292 msgid "Shared in {item} with {user}" msgstr "已和 {user} 分享 {item}" -#: js/share.js:296 +#: js/share.js:313 msgid "Unshare" msgstr "å–æ¶ˆå…±äº«" -#: js/share.js:308 +#: js/share.js:325 msgid "can edit" msgstr "å¯ç·¨è¼¯" -#: js/share.js:310 +#: js/share.js:327 msgid "access control" msgstr "å˜å–控制" -#: js/share.js:313 +#: js/share.js:330 msgid "create" msgstr "建立" -#: js/share.js:316 +#: js/share.js:333 msgid "update" msgstr "æ›´æ–°" -#: js/share.js:319 +#: js/share.js:336 msgid "delete" msgstr "刪除" -#: js/share.js:322 +#: js/share.js:339 msgid "share" msgstr "分享" -#: js/share.js:356 js/share.js:541 +#: js/share.js:373 js/share.js:558 msgid "Password protected" msgstr "å—密碼ä¿è·" -#: js/share.js:554 +#: js/share.js:571 msgid "Error unsetting expiration date" msgstr "è§£é™¤éŽæœŸæ—¥è¨å®šå¤±æ•—" -#: js/share.js:566 +#: js/share.js:583 msgid "Error setting expiration date" msgstr "錯誤的到期日è¨å®š" -#: js/share.js:581 +#: js/share.js:598 msgid "Sending ..." msgstr "æ£åœ¨å¯„出..." -#: js/share.js:592 +#: js/share.js:609 msgid "Email sent" msgstr "Email 已寄出" +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +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 "ownCloud 密碼é‡è¨" @@ -445,87 +540,11 @@ msgstr "資料庫主機" msgid "Finish setup" msgstr "完æˆè¨å®š" -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Sunday" -msgstr "週日" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Monday" -msgstr "週一" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Tuesday" -msgstr "週二" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Wednesday" -msgstr "週三" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Thursday" -msgstr "週四" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Friday" -msgstr "週五" - -#: templates/layout.guest.php:16 templates/layout.user.php:17 -msgid "Saturday" -msgstr "週å…" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "January" -msgstr "一月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "February" -msgstr "二月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "March" -msgstr "三月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "April" -msgstr "四月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "May" -msgstr "五月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "June" -msgstr "å…æœˆ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "July" -msgstr "七月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "August" -msgstr "八月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "September" -msgstr "乿œˆ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "October" -msgstr "åæœˆ" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "November" -msgstr "å一月" - -#: templates/layout.guest.php:17 templates/layout.user.php:18 -msgid "December" -msgstr "å二月" - -#: templates/layout.guest.php:42 +#: templates/layout.guest.php:34 msgid "web services under your control" msgstr "網路æœå‹™åœ¨æ‚¨æŽ§åˆ¶ä¹‹ä¸‹" -#: templates/layout.user.php:45 +#: templates/layout.user.php:32 msgid "Log out" msgstr "登出" diff --git a/l10n/zh_TW/files.po b/l10n/zh_TW/files.po index baa21b71fbf..5082c3edac6 100644 --- a/l10n/zh_TW/files.po +++ b/l10n/zh_TW/files.po @@ -7,13 +7,14 @@ # <dw4dev@gmail.com>, 2012. # Eddy Chang <taiwanmambo@gmail.com>, 2012. # <nfsmwlin@gmail.com>, 2013. +# Pellaeon Lin <nfsmwlin@gmail.com>, 2013. # ywang <ywang1007@gmail.com>, 2012. 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 23:05+0000\n" +"POT-Creation-Date: 2013-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:02+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -22,65 +23,46 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/delete.php:28 ajax/getstoragestats.php:11 ajax/upload.php:17 -#: ajax/upload.php:76 templates/index.php:18 -msgid "Upload" -msgstr "上傳" - -#: ajax/move.php:17 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "無法移動 %s - åŒå的檔案已經å˜åœ¨" - -#: ajax/move.php:24 -#, php-format -msgid "Could not move %s" -msgstr "無法移動 %s" - -#: ajax/rename.php:19 -msgid "Unable to rename file" -msgstr "ç„¡æ³•é‡æ–°å‘½å檔案" - -#: ajax/upload.php:20 +#: ajax/upload.php:17 msgid "No file was uploaded. Unknown error" msgstr "沒有檔案被上傳。未知的錯誤。" -#: ajax/upload.php:30 +#: ajax/upload.php:24 msgid "There is no error, the file uploaded with success" msgstr "無錯誤,檔案上傳æˆåŠŸ" -#: ajax/upload.php:31 +#: ajax/upload.php:25 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "上傳的檔案大å°è¶…éŽ php.ini ç•¶ä¸ upload_max_filesize åƒæ•¸çš„è¨å®šï¼š" -#: ajax/upload.php:33 +#: ajax/upload.php:27 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "上傳的檔案大å°è¶…éŽ HTML è¡¨å–®ä¸ MAX_FILE_SIZE çš„é™åˆ¶" -#: ajax/upload.php:35 +#: ajax/upload.php:29 msgid "The uploaded file was only partially uploaded" msgstr "åªæœ‰æª”案的一部分被上傳" -#: ajax/upload.php:36 +#: ajax/upload.php:30 msgid "No file was uploaded" msgstr "無已上傳檔案" -#: ajax/upload.php:37 +#: ajax/upload.php:31 msgid "Missing a temporary folder" msgstr "éºå¤±æš«å˜è³‡æ–™å¤¾" -#: ajax/upload.php:38 +#: ajax/upload.php:32 msgid "Failed to write to disk" msgstr "寫入硬碟失敗" -#: ajax/upload.php:57 +#: ajax/upload.php:51 msgid "Not enough space available" msgstr "æ²’æœ‰è¶³å¤ çš„å¯ç”¨ç©ºé–“" -#: ajax/upload.php:91 +#: ajax/upload.php:82 msgid "Invalid directory." msgstr "無效的資料夾。" @@ -88,151 +70,151 @@ msgstr "無效的資料夾。" msgid "Files" msgstr "檔案" -#: js/fileactions.js:117 templates/index.php:82 templates/index.php:83 +#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 msgid "Unshare" msgstr "å–æ¶ˆå…±äº«" -#: js/fileactions.js:119 templates/index.php:88 templates/index.php:89 +#: js/fileactions.js:119 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "刪除" -#: js/fileactions.js:181 +#: js/fileactions.js:185 msgid "Rename" msgstr "釿–°å‘½å" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "{new_name} already exists" msgstr "{new_name} 已經å˜åœ¨" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "replace" msgstr "å–代" -#: js/filelist.js:205 +#: js/filelist.js:208 msgid "suggest name" msgstr "å»ºè°æª”å" -#: js/filelist.js:205 js/filelist.js:207 +#: js/filelist.js:208 js/filelist.js:210 msgid "cancel" msgstr "å–æ¶ˆ" -#: js/filelist.js:254 +#: js/filelist.js:253 msgid "replaced {new_name}" msgstr "å·²å–代 {new_name}" -#: js/filelist.js:254 js/filelist.js:256 js/filelist.js:288 js/filelist.js:290 +#: js/filelist.js:253 js/filelist.js:255 msgid "undo" msgstr "復原" -#: js/filelist.js:256 +#: js/filelist.js:255 msgid "replaced {new_name} with {old_name}" msgstr "使用 {new_name} å–代 {old_name}" -#: js/filelist.js:288 -msgid "unshared {files}" -msgstr "已喿¶ˆåˆ†äº« {files}" - -#: js/filelist.js:290 -msgid "deleted {files}" -msgstr "已刪除 {files}" +#: js/filelist.js:280 +msgid "perform delete operation" +msgstr "" -#: js/files.js:48 +#: js/files.js:52 msgid "'.' is an invalid file name." msgstr "'.' 是ä¸åˆæ³•的檔å。" -#: js/files.js:53 +#: js/files.js:56 msgid "File name cannot be empty." msgstr "檔åä¸èƒ½ç‚ºç©ºã€‚" -#: js/files.js:62 +#: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." msgstr "檔åä¸åˆæ³•,ä¸å…許 '\\', '/', '<', '>', ':', '\"', '|', '?' å’Œ '*' 。" -#: js/files.js:204 +#: 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 "" +msgstr "æ£åœ¨æº–å‚™æ‚¨çš„ä¸‹è¼‰ï¼Œè‹¥æ‚¨çš„æª”æ¡ˆè¼ƒå¤§ï¼Œå°‡æœƒéœ€è¦æ›´å¤šæ™‚間。" -#: js/files.js:242 +#: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "ç„¡æ³•ä¸Šå‚³æ‚¨çš„æª”æ¡ˆå› ç‚ºå®ƒå¯èƒ½æ˜¯ä¸€å€‹ç›®éŒ„或檔案大å°ç‚º0" -#: js/files.js:242 +#: js/files.js:261 msgid "Upload Error" msgstr "上傳發生錯誤" -#: js/files.js:259 +#: js/files.js:278 msgid "Close" msgstr "關閉" -#: js/files.js:278 js/files.js:397 js/files.js:431 +#: js/files.js:297 js/files.js:413 js/files.js:444 msgid "Pending" msgstr "ç‰å€™ä¸" -#: js/files.js:298 +#: js/files.js:317 msgid "1 file uploading" msgstr "1 個檔案æ£åœ¨ä¸Šå‚³" -#: js/files.js:301 js/files.js:357 js/files.js:372 +#: js/files.js:320 js/files.js:375 js/files.js:390 msgid "{count} files uploading" msgstr "{count} 個檔案æ£åœ¨ä¸Šå‚³" -#: js/files.js:376 js/files.js:414 +#: js/files.js:393 js/files.js:428 msgid "Upload cancelled." msgstr "ä¸Šå‚³å–æ¶ˆ" -#: js/files.js:486 +#: js/files.js:502 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "檔案上傳ä¸ã€‚離開æ¤é é¢å°‡æœƒå–消上傳。" -#: js/files.js:559 +#: js/files.js:575 msgid "URL cannot be empty." msgstr "URL ä¸èƒ½ç‚ºç©ºç™½." -#: js/files.js:565 +#: js/files.js:580 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "無效的資料夾å稱,'Shared' 的使用被 Owncloud ä¿ç•™" -#: js/files.js:775 -msgid "{count} files scanned" -msgstr "{count} 個檔案已掃æ" - -#: js/files.js:783 -msgid "error while scanning" -msgstr "æŽƒææ™‚發生錯誤" - -#: js/files.js:857 templates/index.php:64 +#: js/files.js:949 templates/index.php:67 msgid "Name" msgstr "å稱" -#: js/files.js:858 templates/index.php:75 +#: js/files.js:950 templates/index.php:78 msgid "Size" msgstr "大å°" -#: js/files.js:859 templates/index.php:77 +#: js/files.js:951 templates/index.php:80 msgid "Modified" msgstr "修改" -#: js/files.js:878 +#: js/files.js:970 msgid "1 folder" msgstr "1 個資料夾" -#: js/files.js:880 +#: js/files.js:972 msgid "{count} folders" msgstr "{count} 個資料夾" -#: js/files.js:888 +#: js/files.js:980 msgid "1 file" msgstr "1 個檔案" -#: js/files.js:890 +#: js/files.js:982 msgid "{count} files" msgstr "{count} 個檔案" +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "上傳" + #: templates/admin.php:5 msgid "File handling" msgstr "檔案處ç†" @@ -281,32 +263,40 @@ msgstr "資料夾" msgid "From link" msgstr "從連çµ" -#: templates/index.php:41 +#: templates/index.php:40 +msgid "Trash" +msgstr "" + +#: templates/index.php:46 msgid "Cancel upload" msgstr "å–æ¶ˆä¸Šå‚³" -#: templates/index.php:56 +#: templates/index.php:59 msgid "Nothing in here. Upload something!" msgstr "沒有任何æ±è¥¿ã€‚請上傳內容ï¼" -#: templates/index.php:70 +#: templates/index.php:73 msgid "Download" msgstr "下載" -#: templates/index.php:102 +#: templates/index.php:105 msgid "Upload too large" msgstr "上傳éŽå¤§" -#: templates/index.php:104 +#: 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:109 +#: templates/index.php:112 msgid "Files are being scanned, please wait." msgstr "æ£åœ¨æŽƒææª”案,請ç¨ç‰ã€‚" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Current scanning" msgstr "ç›®å‰æŽƒæ" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/zh_TW/files_encryption.po b/l10n/zh_TW/files_encryption.po index 08bcf01b0d2..0ff077a2b2e 100644 --- a/l10n/zh_TW/files_encryption.po +++ b/l10n/zh_TW/files_encryption.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Pellaeon Lin <nfsmwlin@gmail.com>, 2013. # ywang <ywang1007@gmail.com>, 2012. 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 23:05+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-27 00:04+0100\n" +"PO-Revision-Date: 2013-01-26 01:44+0000\n" +"Last-Translator: pellaeon <nfsmwlin@gmail.com>\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" @@ -22,53 +23,53 @@ msgstr "" msgid "" "Please switch to your ownCloud client and change your encryption password to" " complete the conversion." -msgstr "" +msgstr "請至您的 ownCloud 客戶端程å¼ä¿®æ”¹æ‚¨çš„åŠ å¯†å¯†ç¢¼ä»¥å®Œæˆè½‰æ›ã€‚" #: js/settings-personal.js:17 msgid "switched to client side encryption" -msgstr "" +msgstr "已切æ›ç‚ºå®¢æˆ¶ç«¯åР坆" #: js/settings-personal.js:21 msgid "Change encryption password to login password" -msgstr "" +msgstr "å°‡åŠ å¯†å¯†ç¢¼ä¿®æ”¹ç‚ºç™»å…¥å¯†ç¢¼" #: js/settings-personal.js:25 msgid "Please check your passwords and try again." -msgstr "" +msgstr "請檢查您的密碼並å†è©¦ä¸€æ¬¡ã€‚" #: js/settings-personal.js:25 msgid "Could not change your file encryption password to your login password" -msgstr "" +msgstr "ç„¡æ³•è®Šæ›´æ‚¨çš„æª”æ¡ˆåŠ å¯†å¯†ç¢¼ç‚ºç™»å…¥å¯†ç¢¼" #: templates/settings-personal.php:3 templates/settings.php:5 msgid "Choose encryption mode:" -msgstr "" +msgstr "鏿“‡åŠ å¯†æ¨¡å¼ï¼š" #: templates/settings-personal.php:20 templates/settings.php:24 msgid "" "Client side encryption (most secure but makes it impossible to access your " "data from the web interface)" -msgstr "" +msgstr "å®¢æˆ¶ç«¯åŠ å¯† (最安全但是會使您無法從網é 界é¢å˜å–您的檔案)" #: templates/settings-personal.php:30 templates/settings.php:36 msgid "" "Server side encryption (allows you to access your files from the web " "interface and the desktop client)" -msgstr "" +msgstr "伺æœå™¨ç«¯åР坆 (您å¯ä»¥å¾žç¶²é 界é¢åŠå®¢æˆ¶ç«¯ç¨‹å¼å˜å–您的檔案)" #: templates/settings-personal.php:41 templates/settings.php:60 msgid "None (no encryption at all)" -msgstr "" +msgstr "ç„¡ (ä¸åР坆)" #: templates/settings.php:10 msgid "" "Important: Once you selected an encryption mode there is no way to change it" " back" -msgstr "" +msgstr "é‡è¦ï¼šä¸€æ—¦æ‚¨é¸æ“‡äº†åŠ å¯†å°±ç„¡æ³•å†æ”¹å›žä¾†" #: templates/settings.php:48 msgid "User specific (let the user decide)" -msgstr "" +msgstr "使用者自訂 (讓使用者自己決定)" #: templates/settings.php:65 msgid "Encryption" diff --git a/l10n/zh_TW/files_sharing.po b/l10n/zh_TW/files_sharing.po index 01ec04db5b4..c60cf46d161 100644 --- a/l10n/zh_TW/files_sharing.po +++ b/l10n/zh_TW/files_sharing.po @@ -4,14 +4,15 @@ # # Translators: # <dw4dev@gmail.com>, 2012. +# Pellaeon Lin <nfsmwlin@gmail.com>, 2013. # <wu0809@msn.com>, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-11-28 00:10+0100\n" -"PO-Revision-Date: 2012-11-27 14:28+0000\n" -"Last-Translator: dw4dev <dw4dev@gmail.com>\n" +"POT-Creation-Date: 2013-01-25 00:05+0100\n" +"PO-Revision-Date: 2013-01-24 13:15+0000\n" +"Last-Translator: pellaeon <nfsmwlin@gmail.com>\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" @@ -47,4 +48,4 @@ msgstr "無法é 覽" #: templates/public.php:43 msgid "web services under your control" -msgstr "" +msgstr "在您掌控之下的網路æœå‹™" diff --git a/l10n/zh_TW/files_trashbin.po b/l10n/zh_TW/files_trashbin.po new file mode 100644 index 00000000000..7a77dadbdef --- /dev/null +++ b/l10n/zh_TW/files_trashbin.po @@ -0,0 +1,58 @@ +# 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-01-31 17:02+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/trash.js:7 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:69 +msgid "perform undelete operation" +msgstr "" + +#: js/trash.js:100 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:101 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:110 +msgid "1 folder" +msgstr "" + +#: js/trash.js:112 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:120 +msgid "1 file" +msgstr "" + +#: js/trash.js:122 +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/zh_TW/lib.po b/l10n/zh_TW/lib.po index 3e708c8a280..8a76773c076 100644 --- a/l10n/zh_TW/lib.po +++ b/l10n/zh_TW/lib.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Pellaeon Lin <nfsmwlin@gmail.com>, 2013. # <sofia168@livemail.tw>, 2012. # <ywang1007+transifex@gmail.com>, 2012. # ywang <ywang1007@gmail.com>, 2012. @@ -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-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-01-24 00:06+0100\n" +"PO-Revision-Date: 2013-01-23 10:07+0000\n" +"Last-Translator: pellaeon <nfsmwlin@gmail.com>\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" @@ -60,9 +61,9 @@ msgstr "回到檔案列表" msgid "Selected files too large to generate zip file." msgstr "鏿“‡çš„æª”案太大以致於無法產生壓縮檔" -#: helper.php:228 +#: helper.php:229 msgid "couldn't be determined" -msgstr "" +msgstr "無法判斷" #: json.php:28 msgid "Application is not enabled" @@ -74,7 +75,7 @@ msgstr "èªè‰éŒ¯èª¤" #: json.php:51 msgid "Token expired. Please reload page." -msgstr "Token éŽæœŸ. è«‹é‡æ–°æ•´ç†é é¢" +msgstr "Token éŽæœŸï¼Œè«‹é‡æ–°æ•´ç†é é¢ã€‚" #: search/provider/file.php:17 search/provider/file.php:35 msgid "Files" @@ -103,12 +104,12 @@ msgstr "%d 分é˜å‰" #: template.php:116 msgid "1 hour ago" -msgstr "1å°æ™‚之å‰" +msgstr "1 å°æ™‚之å‰" #: template.php:117 #, php-format msgid "%d hours ago" -msgstr "%då°æ™‚之å‰" +msgstr "%d å°æ™‚之å‰" #: template.php:118 msgid "today" @@ -130,7 +131,7 @@ msgstr "上個月" #: template.php:122 #, php-format msgid "%d months ago" -msgstr "%d個月之å‰" +msgstr "%d 個月之å‰" #: template.php:123 msgid "last year" @@ -143,7 +144,7 @@ msgstr "幾年å‰" #: updater.php:75 #, php-format msgid "%s is available. Get <a href=\"%s\">more information</a>" -msgstr "%s 已經å¯ç”¨. å–å¾— <a href=\"%s\">更多資訊</a>" +msgstr "%s 已經å¯ç”¨ã€‚å–å¾— <a href=\"%s\">更多資訊</a>" #: updater.php:77 msgid "up to date" @@ -156,4 +157,4 @@ msgstr "檢查更新已åœç”¨" #: vcategories.php:188 vcategories.php:249 #, php-format msgid "Could not find category \"%s\"" -msgstr "找ä¸åˆ°åˆ†é¡ž-\"%s\"" +msgstr "找ä¸åˆ°åˆ†é¡žï¼š\"%s\"" diff --git a/l10n/zh_TW/settings.po b/l10n/zh_TW/settings.po index 36a92e308c2..0b6948fb19c 100644 --- a/l10n/zh_TW/settings.po +++ b/l10n/zh_TW/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-01-12 00:09+0100\n" -"PO-Revision-Date: 2013-01-11 23:09+0000\n" +"POT-Creation-Date: 2013-01-31 00:27+0100\n" +"PO-Revision-Date: 2013-01-30 23:28+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -94,7 +94,7 @@ msgstr "啟用" msgid "Saving..." msgstr "儲å˜ä¸..." -#: personal.php:42 personal.php:43 +#: personal.php:34 personal.php:35 msgid "__language_name__" msgstr "__語言_å稱__" @@ -106,15 +106,15 @@ msgstr "æ·»åŠ ä½ çš„ App" msgid "More Apps" msgstr "更多Apps" -#: templates/apps.php:27 +#: templates/apps.php:24 msgid "Select an App" msgstr "鏿“‡ä¸€å€‹æ‡‰ç”¨ç¨‹å¼" -#: templates/apps.php:31 +#: templates/apps.php:28 msgid "See application page at apps.owncloud.com" msgstr "查看應用程å¼é 颿–¼ apps.owncloud.com" -#: templates/apps.php:32 +#: templates/apps.php:29 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-æ ¸å‡†: <span class=\"author\"></span>" @@ -163,7 +163,7 @@ msgstr "下載 Android 客戶端" msgid "Download iOS Client" msgstr "下載 iOS 客戶端" -#: templates/personal.php:21 templates/users.php:23 templates/users.php:82 +#: templates/personal.php:21 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "密碼" @@ -233,11 +233,11 @@ msgid "" "License\">AGPL</abbr></a>." msgstr "ç”±<a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud 社å€</a>開發,<a href=\"https://github.com/owncloud\" target=\"_blank\">æºä»£ç¢¼</a>在<a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>許å¯è‰ä¸‹ç™¼å¸ƒã€‚" -#: templates/users.php:21 templates/users.php:81 -msgid "Name" -msgstr "å稱" +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" -#: templates/users.php:26 templates/users.php:83 templates/users.php:103 +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" msgstr "群組" @@ -249,26 +249,38 @@ msgstr "å‰µé€ " msgid "Default Storage" msgstr "é è¨å„²å˜å€" -#: templates/users.php:42 templates/users.php:138 +#: templates/users.php:42 templates/users.php:142 msgid "Unlimited" msgstr "ç„¡é™åˆ¶" -#: templates/users.php:60 templates/users.php:153 +#: templates/users.php:60 templates/users.php:157 msgid "Other" msgstr "å…¶ä»–" -#: templates/users.php:85 templates/users.php:117 +#: templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 msgid "Group Admin" msgstr "群組 管ç†å“¡" -#: templates/users.php:87 +#: templates/users.php:86 msgid "Storage" msgstr "儲å˜å€" -#: templates/users.php:133 +#: 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:161 +#: templates/users.php:165 msgid "Delete" msgstr "刪除" diff --git a/lib/api.php b/lib/api.php index 0fce109a423..545b55757ff 100644 --- a/lib/api.php +++ b/lib/api.php @@ -90,6 +90,9 @@ class OC_API { if(self::isAuthorised(self::$actions[$name])) { if(is_callable(self::$actions[$name]['action'])) { $response = call_user_func(self::$actions[$name]['action'], $parameters); + if(!($response instanceof OC_OCS_Result)) { + $response = new OC_OCS_Result(null, 996, 'Internal Server Error'); + } } else { $response = new OC_OCS_Result(null, 998, 'Api method not found'); } diff --git a/lib/app.php b/lib/app.php index 662af56d258..73bee11a69c 100644 --- a/lib/app.php +++ b/lib/app.php @@ -63,17 +63,17 @@ class OC_App{ if (!defined('DEBUG') || !DEBUG) { if (is_null($types) - && empty(OC_Util::$core_scripts) - && empty(OC_Util::$core_styles)) { + && empty(OC_Util::$core_scripts) + && empty(OC_Util::$core_styles)) { OC_Util::$core_scripts = OC_Util::$scripts; - OC_Util::$scripts = array(); - OC_Util::$core_styles = OC_Util::$styles; - OC_Util::$styles = array(); - } + OC_Util::$scripts = array(); + OC_Util::$core_styles = OC_Util::$styles; + OC_Util::$styles = array(); } - // return - return true; } + // return + return true; +} /** * load a single app @@ -299,7 +299,7 @@ class OC_App{ if(OC_Config::getValue('knowledgebaseenabled', true)==true) { $settings = array( array( "id" => "help", "order" => 1000, "href" => OC_Helper::linkToRoute( "settings_help" ), "name" => $l->t("Help"), "icon" => OC_Helper::imagePath( "settings", "help.svg" )) - ); + ); } // if the user is logged-in @@ -519,16 +519,16 @@ class OC_App{ $forms=array(); switch($type) { case 'settings': - $source=self::$settingsForms; - break; + $source=self::$settingsForms; + break; case 'admin': - $source=self::$adminForms; - break; + $source=self::$adminForms; + break; case 'personal': - $source=self::$personalForms; - break; + $source=self::$personalForms; + break; default: - return array(); + return array(); } foreach($source as $form) { $forms[]=include $form; @@ -589,6 +589,72 @@ class OC_App{ } /** + * @brief: Lists all apps, this is used in apps.php + * @return array + */ + public static function listAllApps() { + $installedApps = OC_App::getAllApps(); + + //TODO which apps do we want to blacklist and how do we integrate blacklisting with the multi apps folder feature? + + $blacklist = array('files');//we dont want to show configuration for these + $appList = array(); + + foreach ( $installedApps as $app ) { + if ( array_search( $app, $blacklist ) === false ) { + + $info=OC_App::getAppInfo($app); + + if (!isset($info['name'])) { + OC_Log::write('core', 'App id "'.$app.'" has no name in appinfo', OC_Log::ERROR); + continue; + } + + if ( OC_Appconfig::getValue( $app, 'enabled', 'no') == 'yes' ) { + $active = true; + } else { + $active = false; + } + + $info['active'] = $active; + + if(isset($info['shipped']) and ($info['shipped']=='true')) { + $info['internal']=true; + $info['internallabel']='Internal App'; + } else { + $info['internal']=false; + $info['internallabel']='3rd Party App'; + } + + $info['preview'] = OC_Helper::imagePath('settings', 'trans.png'); + $info['version'] = OC_App::getAppVersion($app); + $appList[] = $info; + } + } + $remoteApps = OC_App::getAppstoreApps(); + if ( $remoteApps ) { + // Remove duplicates + foreach ( $appList as $app ) { + foreach ( $remoteApps AS $key => $remote ) { + if ( + $app['name'] == $remote['name'] + // To set duplicate detection to use OCS ID instead of string name, + // enable this code, remove the line of code above, + // and add <ocs_id>[ID]</ocs_id> to info.xml of each 3rd party app: + // OR $app['ocs_id'] == $remote['ocs_id'] + ) { + unset( $remoteApps[$key]); + } + } + } + $combinedApps = array_merge( $appList, $remoteApps ); + } else { + $combinedApps = $appList; + } + return $combinedApps; +} + + /** * @brief: get a list of all apps on apps.owncloud.com * @return array, multi-dimensional array of apps. Keys: id, name, type, typename, personid, license, detailpage, preview, changed, description */ @@ -737,16 +803,16 @@ class OC_App{ /** * @param string $appid - * @return OC_FilesystemView + * @return \OC\Files\View */ public static function getStorage($appid) { if(OC_App::isEnabled($appid)) {//sanity check if(OC_User::isLoggedIn()) { - $view = new OC_FilesystemView('/'.OC_User::getUser()); + $view = new \OC\Files\View('/'.OC_User::getUser()); if(!$view->file_exists($appid)) { $view->mkdir($appid); } - return new OC_FilesystemView('/'.OC_User::getUser().'/'.$appid); + return new \OC\Files\View('/'.OC_User::getUser().'/'.$appid); }else{ OC_Log::write('core', 'Can\'t get app storage, app '.$appid.', user not logged in', OC_Log::ERROR); return false; diff --git a/lib/archive/tar.php b/lib/archive/tar.php index 0fa633c6038..117d88e5f42 100644 --- a/lib/archive/tar.php +++ b/lib/archive/tar.php @@ -308,7 +308,7 @@ class OC_Archive_TAR extends OC_Archive{ if($mode=='r' or $mode=='rb') { return fopen($tmpFile, $mode); }else{ - OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack'); + \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack')); self::$tempFiles[$tmpFile]=$path; return fopen('close://'.$tmpFile, $mode); } diff --git a/lib/archive/zip.php b/lib/archive/zip.php index 1c967baa08f..8e31795ded1 100644 --- a/lib/archive/zip.php +++ b/lib/archive/zip.php @@ -171,7 +171,7 @@ class OC_Archive_ZIP extends OC_Archive{ $ext=''; } $tmpFile=OCP\Files::tmpFile($ext); - OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack'); + \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack')); if($this->fileExists($path)) { $this->extractFile($path, $tmpFile); } diff --git a/lib/base.php b/lib/base.php index 4b198c4f784..ea5c939cd80 100644 --- a/lib/base.php +++ b/lib/base.php @@ -96,7 +96,14 @@ class OC } elseif (strpos($className, 'OCP\\') === 0) { $path = 'public/' . strtolower(str_replace('\\', '/', substr($className, 3)) . '.php'); } elseif (strpos($className, 'OCA\\') === 0) { - $path = 'apps/' . strtolower(str_replace('\\', '/', substr($className, 3)) . '.php'); + foreach(self::$APPSROOTS as $appDir) { + $path = $appDir['path'] . '/' . strtolower(str_replace('\\', '/', substr($className, 3)) . '.php'); + $fullPath = stream_resolve_include_path($path); + if (file_exists($fullPath)) { + require_once $fullPath; + return false; + } + } } elseif (strpos($className, 'Sabre_') === 0) { $path = str_replace('_', '/', $className) . '.php'; } elseif (strpos($className, 'Symfony\\Component\\Routing\\') === 0) { @@ -105,6 +112,8 @@ class OC $path = str_replace('\\', '/', $className) . '.php'; } elseif (strpos($className, 'Test_') === 0) { $path = 'tests/lib/' . strtolower(str_replace('_', '/', substr($className, 5)) . '.php'); + } elseif (strpos($className, 'Test\\') === 0) { + $path = 'tests/lib/' . strtolower(str_replace('\\', '/', substr($className, 5)) . '.php'); } else { return false; } @@ -252,6 +261,7 @@ class OC if ($showTemplate && !OC_Config::getValue('maintenance', false)) { OC_Config::setValue('maintenance', true); OC_Log::write('core', 'starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, OC_Log::DEBUG); + OC_Util::addscript('update'); $tmpl = new OC_Template('', 'update', 'guest'); $tmpl->assign('version', OC_Util::getVersionString()); $tmpl->printPage(); @@ -268,7 +278,7 @@ class OC { // Add the stuff we need always OC_Util::addScript("jquery-1.7.2.min"); - OC_Util::addScript("jquery-ui-1.8.16.custom.min"); + OC_Util::addScript("jquery-ui-1.10.0.custom"); OC_Util::addScript("jquery-showpassword"); OC_Util::addScript("jquery.infieldlabel"); OC_Util::addScript("jquery-tipsy"); @@ -282,8 +292,9 @@ class OC OC_Util::addStyle("styles"); OC_Util::addStyle("multiselect"); - OC_Util::addStyle("jquery-ui-1.8.16.custom"); + OC_Util::addStyle("jquery-ui-1.10.0.custom"); OC_Util::addStyle("jquery-tipsy"); + OC_Util::addScript("oc-requesttoken"); } public static function initSession() @@ -411,18 +422,16 @@ class OC } // register the stream wrappers - require_once 'streamwrappers.php'; - stream_wrapper_register("fakedir", "OC_FakeDirStream"); - stream_wrapper_register('static', 'OC_StaticStreamWrapper'); - stream_wrapper_register('close', 'OC_CloseStreamWrapper'); + stream_wrapper_register('fakedir', 'OC\Files\Stream\Dir'); + stream_wrapper_register('static', 'OC\Files\Stream\StaticStream'); + stream_wrapper_register('close', 'OC\Files\Stream\Close'); + stream_wrapper_register('oc', 'OC\Files\Stream\OC'); self::checkConfig(); self::checkInstalled(); self::checkSSL(); self::initSession(); self::initTemplateEngine(); - self::checkMaintenanceMode(); - self::checkUpgrade(); $errors = OC_Util::checkServer(); if (count($errors) > 0) { @@ -495,7 +504,7 @@ class OC // write error into log if locale can't be set if (OC_Util::issetlocaleworking() == false) { - OC_Log::write('core', 'setting locate 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 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') { @@ -540,22 +549,6 @@ class OC */ public static function handleRequest() { - if (!OC_Config::getValue('installed', false)) { - require_once 'core/setup.php'; - exit(); - } - // Handle redirect URL for logged in users - if (isset($_REQUEST['redirect_url']) && OC_User::isLoggedIn()) { - $location = OC_Helper::makeURLAbsolute(urldecode($_REQUEST['redirect_url'])); - header('Location: ' . $location); - return; - } - // Handle WebDAV - if ($_SERVER['REQUEST_METHOD'] == 'PROPFIND') { - header('location: ' . OC_Helper::linkToRemote('webdav')); - return; - } - // load all the classpaths from the enabled apps so they are available // in the routing files of each app OC::loadAppClassPaths(); @@ -577,6 +570,27 @@ class OC self::loadCSSFile($param); return; } + + // Check if ownCloud is installed or in maintenance (update) mode + if (!OC_Config::getValue('installed', false)) { + require_once 'core/setup.php'; + exit(); + } + self::checkMaintenanceMode(); + self::checkUpgrade(); + + // Handle redirect URL for logged in users + if (isset($_REQUEST['redirect_url']) && OC_User::isLoggedIn()) { + $location = OC_Helper::makeURLAbsolute(urldecode($_REQUEST['redirect_url'])); + header('Location: ' . $location); + return; + } + // Handle WebDAV + if ($_SERVER['REQUEST_METHOD'] == 'PROPFIND') { + header('location: ' . OC_Helper::linkToRemote('webdav')); + return; + } + // Someone is logged in : if (OC_User::isLoggedIn()) { OC_App::loadApps(); diff --git a/lib/cache/file.php b/lib/cache/file.php index 27d8b19f36e..f9ecf41dcac 100644 --- a/lib/cache/file.php +++ b/lib/cache/file.php @@ -15,11 +15,11 @@ class OC_Cache_File{ } if(OC_User::isLoggedIn()) { $subdir = 'cache'; - $view = new OC_FilesystemView('/'.OC_User::getUser()); + $view = new \OC\Files\View('/'.OC_User::getUser()); if(!$view->file_exists($subdir)) { $view->mkdir($subdir); } - $this->storage = new OC_FilesystemView('/'.OC_User::getUser().'/'.$subdir); + $this->storage = new \OC\Files\View('/'.OC_User::getUser().'/'.$subdir); return $this->storage; }else{ OC_Log::write('core', 'Can\'t get cache storage, user not logged in', OC_Log::ERROR); diff --git a/lib/connector/sabre/directory.php b/lib/connector/sabre/directory.php index 6076aed6fcd..a7201579366 100644 --- a/lib/connector/sabre/directory.php +++ b/lib/connector/sabre/directory.php @@ -62,7 +62,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa } } else { $newPath = $this->path . '/' . $name; - OC_Filesystem::file_put_contents($newPath, $data); + \OC\Files\Filesystem::file_put_contents($newPath, $data); return OC_Connector_Sabre_Node::getETagPropertyForPath($newPath); } @@ -78,7 +78,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa public function createDirectory($name) { $newPath = $this->path . '/' . $name; - OC_Filesystem::mkdir($newPath); + \OC\Files\Filesystem::mkdir($newPath); } @@ -93,7 +93,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa $path = $this->path . '/' . $name; if (is_null($info)) { - $info = OC_Files::getFileInfo($path); + $info = \OC\Files\Filesystem::getFileInfo($path); } if (!$info) { @@ -116,12 +116,13 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa * @return Sabre_DAV_INode[] */ public function getChildren() { - $folder_content = OC_Files::getDirectoryContent($this->path); + + $folder_content = \OC\Files\Filesystem::getDirectoryContent($this->path); $paths = array(); foreach($folder_content as $info) { $paths[] = $this->path.'/'.$info['name']; + $properties[$this->path.'/'.$info['name']][self::GETETAG_PROPERTYNAME] = $info['etag']; } - $properties = array_fill_keys($paths, array()); if(count($paths)>0) { // // the number of arguments within IN conditions are limited in most databases @@ -160,7 +161,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa public function childExists($name) { $path = $this->path . '/' . $name; - return OC_Filesystem::file_exists($path); + return \OC\Files\Filesystem::file_exists($path); } @@ -173,7 +174,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa if ($this->path != "/Shared") { foreach($this->getChildren() as $child) $child->delete(); - OC_Filesystem::rmdir($this->path); + \OC\Files\Filesystem::rmdir($this->path); } } @@ -184,10 +185,10 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa * @return array */ public function getQuotaInfo() { - $rootInfo=OC_FileCache_Cached::get(''); + $rootInfo=\OC\Files\Filesystem::getFileInfo(''); return array( $rootInfo['size'], - OC_Filesystem::free_space() + \OC\Files\Filesystem::free_space() ); } diff --git a/lib/connector/sabre/file.php b/lib/connector/sabre/file.php index 8d963a1cf8d..1c18a391742 100644 --- a/lib/connector/sabre/file.php +++ b/lib/connector/sabre/file.php @@ -45,7 +45,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D */ public function put($data) { - OC_Filesystem::file_put_contents($this->path, $data); + \OC\Files\Filesystem::file_put_contents($this->path,$data); return OC_Connector_Sabre_Node::getETagPropertyForPath($this->path); } @@ -57,7 +57,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D */ public function get() { - return OC_Filesystem::fopen($this->path, 'rb'); + return \OC\Files\Filesystem::fopen($this->path,'rb'); } @@ -68,7 +68,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D */ public function delete() { - OC_Filesystem::unlink($this->path); + \OC\Files\Filesystem::unlink($this->path); } @@ -98,16 +98,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D if (isset($properties[self::GETETAG_PROPERTYNAME])) { return $properties[self::GETETAG_PROPERTYNAME]; } - return $this->getETagPropertyForPath($this->path); - } - - /** - * Creates a ETag for this path. - * @param string $path Path of the file - * @return string|null Returns null if the ETag can not effectively be determined - */ - static protected function createETag($path) { - return OC_Filesystem::hash('md5', $path); + return null; } /** @@ -122,7 +113,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D return $this->fileinfo_cache['mimetype']; } - return OC_Filesystem::getMimeType($this->path); + return \OC\Files\Filesystem::getMimeType($this->path); } } diff --git a/lib/connector/sabre/node.php b/lib/connector/sabre/node.php index 026ec9f7ec5..b48d3b41f24 100644 --- a/lib/connector/sabre/node.php +++ b/lib/connector/sabre/node.php @@ -84,12 +84,12 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr $newPath = $parentPath . '/' . $newName; $oldPath = $this->path; - OC_Filesystem::rename($this->path, $newPath); + \OC\Files\Filesystem::rename($this->path,$newPath); $this->path = $newPath; $query = OC_DB::prepare( 'UPDATE `*PREFIX*properties` SET `propertypath` = ? WHERE `userid` = ? AND `propertypath` = ?' ); - $query->execute( array( $newPath, OC_User::getUser(), $oldPath )); + $query->execute( array( $newPath,OC_User::getUser(), $oldPath )); } @@ -104,9 +104,9 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr */ protected function getFileinfoCache() { if (!isset($this->fileinfo_cache)) { - if ($fileinfo_cache = OC_FileCache::get($this->path)) { + if ($fileinfo_cache = \OC\Files\Filesystem::getFileInfo($this->path)) { } else { - $fileinfo_cache = OC_Filesystem::stat($this->path); + $fileinfo_cache = \OC\Files\Filesystem::stat($this->path); } $this->fileinfo_cache = $fileinfo_cache; @@ -134,7 +134,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr * Even if the modification time is set to a custom value the access time is set to now. */ public function touch($mtime) { - OC_Filesystem::touch($this->path, $mtime); + \OC\Files\Filesystem::touch($this->path, $mtime); } /** @@ -159,10 +159,10 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr } else { if(!array_key_exists( $propertyName, $existing )) { $query = OC_DB::prepare( 'INSERT INTO `*PREFIX*properties` (`userid`,`propertypath`,`propertyname`,`propertyvalue`) VALUES(?,?,?,?)' ); - $query->execute( array( OC_User::getUser(), $this->path, $propertyName, $propertyValue )); + $query->execute( array( OC_User::getUser(), $this->path, $propertyName,$propertyValue )); } else { $query = OC_DB::prepare( 'UPDATE `*PREFIX*properties` SET `propertyvalue` = ? WHERE `userid` = ? AND `propertypath` = ? AND `propertyname` = ?' ); - $query->execute( array( $propertyValue, OC_User::getUser(), $this->path, $propertyName )); + $query->execute( array( $propertyValue,OC_User::getUser(), $this->path, $propertyName )); } } } @@ -190,6 +190,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr while( $row = $result->fetchRow()) { $this->property_cache[$row['propertyname']] = $row['propertyvalue']; } + $this->property_cache[self::GETETAG_PROPERTYNAME] = $this->getETagPropertyForPath($this->path); } // if the array was empty, we need to return everything @@ -205,57 +206,16 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr } /** - * @brief Creates a ETag for this path. - * @param string $path Path of the file - * @return string|null Returns null if the ETag can not effectively be determined - */ - static protected function createETag($path) { - if(self::$ETagFunction) { - $hash = call_user_func(self::$ETagFunction, $path); - return $hash; - }else{ - return uniqid('', true); - } - } - - /** - * @brief Returns the ETag surrounded by double-quotes for this path. + * Returns the ETag surrounded by double-quotes for this path. * @param string $path Path of the file * @return string|null Returns null if the ETag can not effectively be determined */ static public function getETagPropertyForPath($path) { - $tag = self::createETag($path); - if (empty($tag)) { - return null; + $data = \OC\Files\Filesystem::getFileInfo($path); + if (isset($data['etag'])) { + return '"'.$data['etag'].'"'; } - $etag = '"'.$tag.'"'; - $query = OC_DB::prepare( 'INSERT INTO `*PREFIX*properties` (`userid`,`propertypath`,`propertyname`,`propertyvalue`) VALUES(?,?,?,?)' ); - $query->execute( array( OC_User::getUser(), $path, self::GETETAG_PROPERTYNAME, $etag )); - return $etag; + return null; } - /** - * @brief Remove the ETag from the cache. - * @param string $path Path of the file - */ - static public function removeETagPropertyForPath($path) { - // remove tags from this and parent paths - $paths = array(); - while ($path != '/' && $path != '.' && $path != '' && $path != '\\') { - $paths[] = $path; - $path = dirname($path); - } - if (empty($paths)) { - return; - } - $paths[] = $path; - $path_placeholders = join(',', array_fill(0, count($paths), '?')); - $query = OC_DB::prepare( 'DELETE FROM `*PREFIX*properties`' - .' WHERE `userid` = ?' - .' AND `propertyname` = ?' - .' AND `propertypath` IN ('.$path_placeholders.')' - ); - $vals = array( OC_User::getUser(), self::GETETAG_PROPERTYNAME ); - $query->execute(array_merge( $vals, $paths )); - } } diff --git a/lib/connector/sabre/quotaplugin.php b/lib/connector/sabre/quotaplugin.php index fbbb4a3cf6f..ce9a968eb3c 100644 --- a/lib/connector/sabre/quotaplugin.php +++ b/lib/connector/sabre/quotaplugin.php @@ -50,7 +50,7 @@ class OC_Connector_Sabre_QuotaPlugin extends Sabre_DAV_ServerPlugin { $uri='/'.$uri; } list($parentUri, $newName) = Sabre_DAV_URLUtil::splitPath($uri); - if ($length > OC_Filesystem::free_space($parentUri)) { + if ($length > \OC\Files\Filesystem::free_space($parentUri)) { throw new Sabre_DAV_Exception_InsufficientStorage(); } } diff --git a/lib/filecache.php b/lib/filecache.php deleted file mode 100644 index 7764890ef1a..00000000000 --- a/lib/filecache.php +++ /dev/null @@ -1,539 +0,0 @@ -<?php - -/** -* @author Robin Appelman -* @copyright 2011 Robin Appelman icewind1991@gmail.com -* -* 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 <http://www.gnu.org/licenses/>. -* -*/ - -/** - * provide caching for filesystem info in the database - * - * not used by OC_Filesystem for reading filesystem info, - * instead apps should use OC_FileCache::get where possible - * - * It will try to keep the data up to date but changes from outside - * ownCloud can invalidate the cache - * - * Methods that take $path and $root params expect $path to be relative, like - * /admin/files/file.txt, if $root is false - * - */ -class OC_FileCache{ - - /** - * get the filesystem info from the cache - * @param string path - * @param string root (optional) - * @return array - * - * returns an associative array with the following keys: - * - size - * - mtime - * - ctime - * - mimetype - * - encrypted - * - versioned - */ - public static function get($path, $root=false) { - if(OC_FileCache_Update::hasUpdated($path, $root)) { - if($root===false) {//filesystem hooks are only valid for the default root - OC_Hook::emit('OC_Filesystem', 'post_write', array('path'=>$path)); - }else{ - OC_FileCache_Update::update($path, $root); - } - } - return OC_FileCache_Cached::get($path, $root); - } - - /** - * put filesystem info in the cache - * @param string $path - * @param array data - * @param string root (optional) - * @note $data is an associative array in the same format as returned - * by get - */ - public static function put($path, $data, $root=false) { - if($root===false) { - $root=OC_Filesystem::getRoot(); - } - $fullpath=OC_Filesystem::normalizePath($root.'/'.$path); - $parent=self::getParentId($fullpath); - $id=self::getId($fullpath, ''); - if(isset(OC_FileCache_Cached::$savedData[$fullpath])) { - $data=array_merge(OC_FileCache_Cached::$savedData[$fullpath], $data); - unset(OC_FileCache_Cached::$savedData[$fullpath]); - } - if($id!=-1) { - self::update($id, $data); - return; - } - - // add parent directory to the file cache if it does not exist yet. - if ($parent == -1 && $fullpath != $root) { - $parentDir = dirname($path); - self::scanFile($parentDir); - $parent = self::getParentId($fullpath); - } - - if(!isset($data['size']) or !isset($data['mtime'])) {//save incomplete data for the next time we write it - OC_FileCache_Cached::$savedData[$fullpath]=$data; - return; - } - if(!isset($data['encrypted'])) { - $data['encrypted']=false; - } - if(!isset($data['versioned'])) { - $data['versioned']=false; - } - $mimePart=dirname($data['mimetype']); - $data['size']=(int)$data['size']; - $data['ctime']=(int)$data['mtime']; - $data['writable']=(int)$data['writable']; - $data['encrypted']=(int)$data['encrypted']; - $data['versioned']=(int)$data['versioned']; - $user=OC_User::getUser(); - $query=OC_DB::prepare('INSERT INTO `*PREFIX*fscache`(`parent`, `name`, `path`, `path_hash`, `size`, `mtime`, `ctime`, `mimetype`, `mimepart`,`user`,`writable`,`encrypted`,`versioned`) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)'); - $result=$query->execute(array($parent, basename($fullpath), $fullpath, md5($fullpath), $data['size'], $data['mtime'], $data['ctime'], $data['mimetype'], $mimePart, $user, $data['writable'], $data['encrypted'], $data['versioned'])); - if(OC_DB::isError($result)) { - OC_Log::write('files', 'error while writing file('.$fullpath.') to cache', OC_Log::ERROR); - } - - if($cache=OC_Cache::getUserCache(true)) { - $cache->remove('fileid/'.$fullpath);//ensure we don't have -1 cached - } - } - - /** - * update filesystem info of a file - * @param int $id - * @param array $data - */ - private static function update($id, $data) { - $arguments=array(); - $queryParts=array(); - foreach(array('size','mtime','ctime','mimetype','encrypted','versioned', 'writable') as $attribute) { - if(isset($data[$attribute])) { - //Convert to int it args are false - if($data[$attribute] === false) { - $arguments[] = 0; - }else{ - $arguments[] = $data[$attribute]; - } - $queryParts[]='`'.$attribute.'`=?'; - } - } - if(isset($data['mimetype'])) { - $arguments[]=dirname($data['mimetype']); - $queryParts[]='`mimepart`=?'; - } - $arguments[]=$id; - - if(!empty($queryParts)) { - $sql = 'UPDATE `*PREFIX*fscache` SET '.implode(' , ', $queryParts).' WHERE `id`=?'; - $query=OC_DB::prepare($sql); - $result=$query->execute($arguments); - if(OC_DB::isError($result)) { - OC_Log::write('files', 'error while updating file('.$id.') in cache', OC_Log::ERROR); - } - } - } - - /** - * register a file move in the cache - * @param string oldPath - * @param string newPath - * @param string root (optional) - */ - public static function move($oldPath, $newPath, $root=false) { - if($root===false) { - $root=OC_Filesystem::getRoot(); - } - // If replacing an existing file, delete the file - if (self::inCache($newPath, $root)) { - self::delete($newPath, $root); - } - $oldPath=$root.$oldPath; - $newPath=$root.$newPath; - $newParent=self::getParentId($newPath); - $query=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `parent`=? ,`name`=?, `path`=?, `path_hash`=? WHERE `path_hash`=?'); - $query->execute(array($newParent, basename($newPath), $newPath, md5($newPath), md5($oldPath))); - - if(($cache=OC_Cache::getUserCache(true)) && $cache->hasKey('fileid/'.$oldPath)) { - $cache->set('fileid/'.$newPath, $cache->get('fileid/'.$oldPath)); - $cache->remove('fileid/'.$oldPath); - } - - $query=OC_DB::prepare('SELECT `path` FROM `*PREFIX*fscache` WHERE `path` LIKE ?'); - $oldLength=strlen($oldPath); - $updateQuery=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `path`=?, `path_hash`=? WHERE `path_hash`=?'); - while($row= $query->execute(array($oldPath.'/%'))->fetchRow()) { - $old=$row['path']; - $new=$newPath.substr($old, $oldLength); - $updateQuery->execute(array($new, md5($new), md5($old))); - - if(($cache=OC_Cache::getUserCache(true)) && $cache->hasKey('fileid/'.$old)) { - $cache->set('fileid/'.$new, $cache->get('fileid/'.$old)); - $cache->remove('fileid/'.$old); - } - } - } - - /** - * delete info from the cache - * @param string path - * @param string root (optional) - */ - public static function delete($path, $root=false) { - if($root===false) { - $root=OC_Filesystem::getRoot(); - } - $query=OC_DB::prepare('DELETE FROM `*PREFIX*fscache` WHERE `path_hash`=?'); - $query->execute(array(md5($root.$path))); - - //delete everything inside the folder - $query=OC_DB::prepare('DELETE FROM `*PREFIX*fscache` WHERE `path` LIKE ?'); - $query->execute(array($root.$path.'/%')); - - OC_Cache::remove('fileid/'.$root.$path); - } - - /** - * return array of filenames matching the querty - * @param string $query - * @param boolean $returnData - * @param string root (optional) - * @return array of filepaths - */ - public static function search($search, $returnData=false, $root=false) { - if($root===false) { - $root=OC_Filesystem::getRoot(); - } - $rootLen=strlen($root); - if(!$returnData) { - $select = '`path`'; - }else{ - $select = '*'; - } - if (OC_Config::getValue('dbtype') === 'oci8') { - $where = 'LOWER(`name`) LIKE LOWER(?) AND `user`=?'; - } else { - $where = '`name` LIKE ? AND `user`=?'; - } - $query=OC_DB::prepare('SELECT '.$select.' FROM `*PREFIX*fscache` WHERE '.$where); - $result=$query->execute(array("%$search%", OC_User::getUser())); - $names=array(); - while($row=$result->fetchRow()) { - if(!$returnData) { - $names[]=substr($row['path'], $rootLen); - }else{ - $row['path']=substr($row['path'], $rootLen); - $names[]=$row; - } - } - return $names; - } - - /** - * get all files and folders in a folder - * @param string path - * @param string root (optional) - * @return array - * - * returns an array of assiciative arrays with the following keys: - * - name - * - size - * - mtime - * - ctime - * - mimetype - * - encrypted - * - versioned - */ - public static function getFolderContent($path, $root=false, $mimetype_filter='') { - if(OC_FileCache_Update::hasUpdated($path, $root, true)) { - OC_FileCache_Update::updateFolder($path, $root); - } - return OC_FileCache_Cached::getFolderContent($path, $root, $mimetype_filter); - } - - /** - * check if a file or folder is in the cache - * @param string $path - * @param string root (optional) - * @return bool - */ - public static function inCache($path, $root=false) { - return self::getId($path, $root)!=-1; - } - - /** - * get the file id as used in the cache - * @param string path - * @param string root (optional) - * @return int - */ - public static function getId($path, $root=false) { - if($root===false) { - $root=OC_Filesystem::getRoot(); - } - - $fullPath=$root.$path; - if(($cache=OC_Cache::getUserCache(true)) && $cache->hasKey('fileid/'.$fullPath)) { - return $cache->get('fileid/'.$fullPath); - } - - $query=OC_DB::prepare('SELECT `id` FROM `*PREFIX*fscache` WHERE `path_hash`=?'); - $result=$query->execute(array(md5($fullPath))); - if(OC_DB::isError($result)) { - OC_Log::write('files', 'error while getting file id of '.$path, OC_Log::ERROR); - return -1; - } - - $result=$result->fetchRow(); - if(is_array($result)) { - $id=$result['id']; - }else{ - $id=-1; - } - if($cache=OC_Cache::getUserCache(true)) { - $cache->set('fileid/'.$fullPath, $id); - } - - return $id; - } - - /** - * get the file path from the id, relative to the home folder of the user - * @param int id - * @param string user (optional) - * @return string - */ - public static function getPath($id, $user='') { - if(!$user) { - $user=OC_User::getUser(); - } - $query=OC_DB::prepare('SELECT `path` FROM `*PREFIX*fscache` WHERE `id`=? AND `user`=?'); - $result=$query->execute(array($id, $user)); - $row=$result->fetchRow(); - $path=$row['path']; - $root='/'.$user.'/files'; - if(substr($path, 0, strlen($root))!=$root) { - return false; - } - return substr($path, strlen($root)); - } - - /** - * get the file id of the parent folder, taking into account '/' has no parent - * @param string $path - * @return int - */ - private static function getParentId($path) { - if($path=='/') { - return -1; - }else{ - return self::getId(dirname($path), ''); - } - } - - /** - * adjust the size of the parent folders - * @param string $path - * @param int $sizeDiff - * @param string root (optinal) - */ - public static function increaseSize($path, $sizeDiff, $root=false) { - if($sizeDiff==0) return; - $item = OC_FileCache_Cached::get($path); - //stop walking up the filetree if we hit a non-folder or reached the root folder - if($path == '/' || $path=='' || $item['mimetype'] !== 'httpd/unix-directory') { - return; - } - $id = $item['id']; - while($id!=-1) {//walk up the filetree increasing the size of all parent folders - $query=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `size`=`size`+? WHERE `id`=?'); - $query->execute(array($sizeDiff, $id)); - $path=dirname($path); - if($path == '' or $path =='/') { - return; - } - $parent = OC_FileCache_Cached::get($path); - $id = $parent['id']; - //stop walking up the filetree if we hit a non-folder - if($parent['mimetype'] !== 'httpd/unix-directory') { - return; - } - } - } - - /** - * recursively scan the filesystem and fill the cache - * @param string $path - * @param OC_EventSource $eventSource (optional) - * @param int $count (optional) - * @param string $root (optional) - */ - public static function scan($path, $eventSource=false,&$count=0, $root=false) { - if($eventSource) { - $eventSource->send('scanning', array('file'=>$path, 'count'=>$count)); - } - $lastSend=$count; - // NOTE: Ugly hack to prevent shared files from going into the cache (the source already exists somewhere in the cache) - if (substr($path, 0, 7) == '/Shared') { - return; - } - if($root===false) { - $view=OC_Filesystem::getView(); - }else{ - $view=new OC_FilesystemView($root); - } - self::scanFile($path, $root); - $dh=$view->opendir($path.'/'); - $totalSize=0; - if($dh) { - while (($filename = readdir($dh)) !== false) { - if($filename != '.' and $filename != '..') { - $file=$path.'/'.$filename; - if($view->is_dir($file.'/')) { - self::scan($file, $eventSource, $count, $root); - }else{ - $totalSize+=self::scanFile($file, $root); - $count++; - if($count>$lastSend+25 and $eventSource) { - $lastSend=$count; - $eventSource->send('scanning', array('file'=>$path, 'count'=>$count)); - } - } - } - } - } - - OC_FileCache_Update::cleanFolder($path, $root); - self::increaseSize($path, $totalSize, $root); - } - - /** - * scan a single file - * @param string path - * @param string root (optional) - * @return int size of the scanned file - */ - public static function scanFile($path, $root=false) { - // NOTE: Ugly hack to prevent shared files from going into the cache (the source already exists somewhere in the cache) - if (substr($path, 0, 7) == '/Shared') { - return; - } - if($root===false) { - $view=OC_Filesystem::getView(); - }else{ - $view=new OC_FilesystemView($root); - } - if(!$view->is_readable($path)) return; //cant read, nothing we can do - clearstatcache(); - $mimetype=$view->getMimeType($path); - $stat=$view->stat($path); - if($mimetype=='httpd/unix-directory') { - $stat['size'] = 0; - $writable=$view->is_writable($path.'/'); - }else{ - $writable=$view->is_writable($path); - } - $stat['mimetype']=$mimetype; - $stat['writable']=$writable; - if($path=='/') { - $path=''; - } - self::put($path, $stat, $root); - return $stat['size']; - } - - /** - * find files by mimetype - * @param string $part1 - * @param string $part2 (optional) - * @param string root (optional) - * @return array of file paths - * - * $part1 and $part2 together form the complete mimetype. - * e.g. searchByMime('text', 'plain') - * - * seccond mimetype part can be ommited - * e.g. searchByMime('audio') - */ - public static function searchByMime($part1, $part2=null, $root=false) { - if($root===false) { - $root=OC_Filesystem::getRoot(); - } - $rootLen=strlen($root); - $root .= '%'; - $user=OC_User::getUser(); - if(!$part2) { - $query=OC_DB::prepare('SELECT `path` FROM `*PREFIX*fscache` WHERE `mimepart`=? AND `user`=? AND `path` LIKE ?'); - $result=$query->execute(array($part1, $user, $root)); - }else{ - $query=OC_DB::prepare('SELECT `path` FROM `*PREFIX*fscache` WHERE `mimetype`=? AND `user`=? AND `path` LIKE ? '); - $result=$query->execute(array($part1.'/'.$part2, $user, $root)); - } - $names=array(); - while($row=$result->fetchRow()) { - $names[]=substr($row['path'], $rootLen); - } - return $names; - } - - /** - * clean old pre-path_hash entries - */ - public static function clean() { - $query=OC_DB::prepare('DELETE FROM `*PREFIX*fscache` WHERE LENGTH(`path_hash`)<30'); - $query->execute(); - } - - /** - * clear filecache entries - * @param string user (optonal) - */ - public static function clear($user='') { - if($user) { - $query=OC_DB::prepare('DELETE FROM `*PREFIX*fscache` WHERE `user`=?'); - $query->execute(array($user)); - }else{ - $query=OC_DB::prepare('DELETE FROM `*PREFIX*fscache`'); - $query->execute(); - } - } - - /** - * trigger an update for the cache by setting the mtimes to 0 - * @param string $user (optional) - */ - public static function triggerUpdate($user='') { - if($user) { - $query=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `mtime`=0 WHERE `user`=? AND `mimetype`= ? '); - $query->execute(array($user,'httpd/unix-directory')); - }else{ - $query=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `mtime`=0 AND `mimetype`= ? '); - $query->execute(array('httpd/unix-directory')); - } - } -} - -//watch for changes and try to keep the cache up to date -OC_Hook::connect('OC_Filesystem', 'post_write', 'OC_FileCache_Update', 'fileSystemWatcherWrite'); -OC_Hook::connect('OC_Filesystem', 'post_delete', 'OC_FileCache_Update', 'fileSystemWatcherDelete'); -OC_Hook::connect('OC_Filesystem', 'post_rename', 'OC_FileCache_Update', 'fileSystemWatcherRename'); -OC_Hook::connect('OC_User', 'post_deleteUser', 'OC_FileCache_Update', 'deleteFromUser'); diff --git a/lib/filecache/cached.php b/lib/filecache/cached.php deleted file mode 100644 index 5e0a00746b9..00000000000 --- a/lib/filecache/cached.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php -/** - * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - - -/** - * get data from the filecache without checking for updates - */ -class OC_FileCache_Cached{ - public static $savedData=array(); - - public static function get($path, $root=false) { - if($root===false) { - $root=OC_Filesystem::getRoot(); - } - $path=$root.$path; - $stmt=OC_DB::prepare('SELECT `id`, `path`,`ctime`,`mtime`,`mimetype`,`size`,`encrypted`,`versioned`,`writable` FROM `*PREFIX*fscache` WHERE `path_hash`=?'); - if ( ! OC_DB::isError($stmt) ) { - $result=$stmt->execute(array(md5($path))); - if ( ! OC_DB::isError($result) ) { - $result = $result->fetchRow(); - } else { - OC:Log::write('OC_FileCache_Cached', 'could not execute get: '. OC_DB::getErrorMessage($result), OC_Log::ERROR); - $result = false; - } - } else { - OC_Log::write('OC_FileCache_Cached', 'could not prepare get: '. OC_DB::getErrorMessage($stmt), OC_Log::ERROR); - $result = false; - } - if(is_array($result)) { - if(isset(self::$savedData[$path])) { - $result=array_merge($result, self::$savedData[$path]); - } - return $result; - }else{ - if(isset(self::$savedData[$path])) { - return self::$savedData[$path]; - }else{ - return array(); - } - } - } - - /** - * get all files and folders in a folder - * @param string path - * @param string root (optional) - * @return array - * - * returns an array of assiciative arrays with the following keys: - * - path - * - name - * - size - * - mtime - * - ctime - * - mimetype - * - encrypted - * - versioned - */ - public static function getFolderContent($path, $root=false, $mimetype_filter='') { - if($root===false) { - $root=OC_Filesystem::getRoot(); - } - $parent=OC_FileCache::getId($path, $root); - if($parent==-1) { - return array(); - } - $query=OC_DB::prepare('SELECT `id`,`path`,`name`,`ctime`,`mtime`,`mimetype`,`size`,`encrypted`,`versioned`,`writable` FROM `*PREFIX*fscache` WHERE `parent`=? AND (`mimetype` LIKE ? OR `mimetype` = ?)'); - $result=$query->execute(array($parent, $mimetype_filter.'%', 'httpd/unix-directory'))->fetchAll(); - if(is_array($result)) { - return $result; - }else{ - OC_Log::write('files', 'getFolderContent(): file not found in cache ('.$path.')', OC_Log::DEBUG); - return false; - } - } -} diff --git a/lib/filecache/update.php b/lib/filecache/update.php deleted file mode 100644 index bc403113e7c..00000000000 --- a/lib/filecache/update.php +++ /dev/null @@ -1,227 +0,0 @@ -<?php -/** - * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - - -/** - * handles updating the filecache according to outside changes - */ -class OC_FileCache_Update{ - /** - * check if a file or folder is updated outside owncloud - * @param string path - * @param string root (optional) - * @param boolean folder - * @return bool - */ - public static function hasUpdated($path, $root=false, $folder=false) { - if($root===false) { - $view=OC_Filesystem::getView(); - }else{ - $view=new OC_FilesystemView($root); - } - if(!$view->file_exists($path)) { - return false; - } - $cachedData=OC_FileCache_Cached::get($path, $root); - if(isset($cachedData['mtime'])) { - $cachedMTime=$cachedData['mtime']; - if($folder) { - return $view->hasUpdated($path.'/', $cachedMTime); - }else{ - return $view->hasUpdated($path, $cachedMTime); - } - }else{//file not in cache, so it has to be updated - if(($path=='/' or $path=='') and $root===false) {//dont auto update the home folder, it will be scanned - return false; - } - return true; - } - } - - /** - * delete non existing files from the cache - */ - public static function cleanFolder($path, $root=false) { - if($root===false) { - $view=OC_Filesystem::getView(); - }else{ - $view=new OC_FilesystemView($root); - } - - $cachedContent=OC_FileCache_Cached::getFolderContent($path, $root); - foreach($cachedContent as $fileData) { - $path=$fileData['path']; - $file=$view->getRelativePath($path); - if(!$view->file_exists($file)) { - if($root===false) {//filesystem hooks are only valid for the default root - OC_Hook::emit('OC_Filesystem', 'post_delete', array('path'=>$file)); - }else{ - self::delete($file, $root); - } - } - } - } - - /** - * update the cache according to changes in the folder - * @param string path - * @param string root (optional) - */ - public static function updateFolder($path, $root=false) { - if($root===false) { - $view=OC_Filesystem::getView(); - }else{ - $view=new OC_FilesystemView($root); - } - $dh=$view->opendir($path.'/'); - if($dh) {//check for changed/new files - while (($filename = readdir($dh)) !== false) { - if($filename != '.' and $filename != '..' and $filename != '') { - $file=$path.'/'.$filename; - $isDir=$view->is_dir($file); - if(self::hasUpdated($file, $root, $isDir)) { - if($isDir) { - self::updateFolder($file, $root); - }elseif($root===false) {//filesystem hooks are only valid for the default root - OC_Hook::emit('OC_Filesystem', 'post_write', array('path'=>$file)); - }else{ - self::update($file, $root); - } - } - } - } - } - - self::cleanFolder($path, $root); - - //update the folder last, so we can calculate the size correctly - if($root===false) {//filesystem hooks are only valid for the default root - OC_Hook::emit('OC_Filesystem', 'post_write', array('path'=>$path)); - }else{ - self::update($path, $root); - } - } - - /** - * called when changes are made to files - * @param array $params - * @param string root (optional) - */ - public static function fileSystemWatcherWrite($params) { - $path=$params['path']; - self::update($path); - } - - /** - * called when files are deleted - * @param array $params - * @param string root (optional) - */ - public static function fileSystemWatcherDelete($params) { - $path=$params['path']; - self::delete($path); - } - - /** - * called when files are deleted - * @param array $params - * @param string root (optional) - */ - public static function fileSystemWatcherRename($params) { - $oldPath=$params['oldpath']; - $newPath=$params['newpath']; - self::rename($oldPath, $newPath); - } - - /** - * update the filecache according to changes to the filesystem - * @param string path - * @param string root (optional) - */ - public static function update($path, $root=false) { - if($root===false) { - $view=OC_Filesystem::getView(); - }else{ - $view=new OC_FilesystemView($root); - } - - $mimetype=$view->getMimeType($path); - - $size=0; - $cached=OC_FileCache_Cached::get($path, $root); - $cachedSize=isset($cached['size'])?$cached['size']:0; - - if($view->is_dir($path.'/')) { - if(OC_FileCache::inCache($path, $root)) { - $cachedContent=OC_FileCache_Cached::getFolderContent($path, $root); - foreach($cachedContent as $file) { - $size+=$file['size']; - } - $mtime=$view->filemtime($path.'/'); - $ctime=$view->filectime($path.'/'); - $writable=$view->is_writable($path.'/'); - OC_FileCache::put($path, array('size'=>$size,'mtime'=>$mtime,'ctime'=>$ctime,'mimetype'=>$mimetype, 'writable'=>$writable)); - }else{ - $count=0; - OC_FileCache::scan($path, null, $count, $root); - return; //increaseSize is already called inside scan - } - }else{ - $size=OC_FileCache::scanFile($path, $root); - } - if($path !== '' and $path !== '/') { - OC_FileCache::increaseSize(dirname($path), $size-$cachedSize, $root); - } - } - - /** - * update the filesystem after a delete has been detected - * @param string path - * @param string root (optional) - */ - public static function delete($path, $root=false) { - $cached=OC_FileCache_Cached::get($path, $root); - if(!isset($cached['size'])) { - return; - } - $size=$cached['size']; - OC_FileCache::increaseSize(dirname($path), -$size, $root); - OC_FileCache::delete($path, $root); - } - - /** - * update the filesystem after a rename has been detected - * @param string oldPath - * @param string newPath - * @param string root (optional) - */ - public static function rename($oldPath, $newPath, $root=false) { - if(!OC_FileCache::inCache($oldPath, $root)) { - return; - } - if($root===false) { - $view=OC_Filesystem::getView(); - }else{ - $view=new OC_FilesystemView($root); - } - - $cached=OC_FileCache_Cached::get($oldPath, $root); - $oldSize=$cached['size']; - OC_FileCache::increaseSize(dirname($oldPath), -$oldSize, $root); - OC_FileCache::increaseSize(dirname($newPath), $oldSize, $root); - OC_FileCache::move($oldPath, $newPath); - } - - /** - * delete files owned by user from the cache - * @param string $parameters$parameters["uid"]) - */ - public static function deleteFromUser($parameters) { - OC_FileCache::clear($parameters["uid"]); - } -} diff --git a/lib/filechunking.php b/lib/filechunking.php index 55a4d730430..d63a0d72c83 100644 --- a/lib/filechunking.php +++ b/lib/filechunking.php @@ -94,49 +94,49 @@ class OC_FileChunking { } public function file_assemble($path) { - $absolutePath = OC_Filesystem::normalizePath(OC_Filesystem::getView()->getAbsolutePath($path)); + $absolutePath = \OC\Files\Filesystem::normalizePath(\OC\Files\Filesystem::getView()->getAbsolutePath($path)); $data = ''; // use file_put_contents as method because that best matches what this function does - if (OC_FileProxy::runPreProxies('file_put_contents', $absolutePath, $data) && OC_Filesystem::isValidPath($path)) { - $path = OC_Filesystem::getView()->getRelativePath($absolutePath); - $exists = OC_Filesystem::file_exists($path); + if (OC_FileProxy::runPreProxies('file_put_contents', $absolutePath, $data) && \OC\Files\Filesystem::isValidPath($path)) { + $path = \OC\Files\Filesystem::getView()->getRelativePath($absolutePath); + $exists = \OC\Files\Filesystem::file_exists($path); $run = true; if(!$exists) { OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_create, + \OC\Files\Filesystem::CLASSNAME, + \OC\Files\Filesystem::signal_create, array( - OC_Filesystem::signal_param_path => $path, - OC_Filesystem::signal_param_run => &$run + \OC\Files\Filesystem::signal_param_path => $path, + \OC\Files\Filesystem::signal_param_run => &$run ) ); } OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_write, + \OC\Files\Filesystem::CLASSNAME, + \OC\Files\Filesystem::signal_write, array( - OC_Filesystem::signal_param_path => $path, - OC_Filesystem::signal_param_run => &$run + \OC\Files\Filesystem::signal_param_path => $path, + \OC\Files\Filesystem::signal_param_run => &$run ) ); if(!$run) { return false; } - $target = OC_Filesystem::fopen($path, 'w'); + $target = \OC\Files\Filesystem::fopen($path, 'w'); if($target) { $count = $this->assemble($target); fclose($target); if(!$exists) { OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_post_create, - array( OC_Filesystem::signal_param_path => $path) + \OC\Files\Filesystem::CLASSNAME, + \OC\Files\Filesystem::signal_post_create, + array( \OC\Files\Filesystem::signal_param_path => $path) ); } OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_post_write, - array( OC_Filesystem::signal_param_path => $path) + \OC\Files\Filesystem::CLASSNAME, + \OC\Files\Filesystem::signal_post_write, + array( \OC\Files\Filesystem::signal_param_path => $path) ); OC_FileProxy::runPostProxies('file_put_contents', $absolutePath, $count); return $count > 0; diff --git a/lib/fileproxy.php b/lib/fileproxy.php index 2f81bde64a1..52ec79b4bdb 100644 --- a/lib/fileproxy.php +++ b/lib/fileproxy.php @@ -36,7 +36,7 @@ * The return value of the post-proxy will be used as the new result of the operation * The operations that have a post-proxy are: * file_get_contents, is_file, is_dir, file_exists, stat, is_readable, - * is_writable, fileatime, filemtime, filectime, file_get_contents, + * is_writable, filemtime, filectime, file_get_contents, * getMimeType, hash, fopen, free_space and search */ diff --git a/lib/fileproxy/fileoperations.php b/lib/fileproxy/fileoperations.php index 516629adaec..47ccd8f8c26 100644 --- a/lib/fileproxy/fileoperations.php +++ b/lib/fileproxy/fileoperations.php @@ -28,10 +28,10 @@ class OC_FileProxy_FileOperations extends OC_FileProxy{ static $rootView; public function premkdir($path) { - if(!self::$rootView) { - self::$rootView = new OC_FilesystemView(''); + if(!self::$rootView){ + self::$rootView = new \OC\Files\View(''); } return !self::$rootView->file_exists($path); } -}
\ No newline at end of file +} diff --git a/lib/fileproxy/quota.php b/lib/fileproxy/quota.php index 503288142aa..7e0f631c8fb 100644 --- a/lib/fileproxy/quota.php +++ b/lib/fileproxy/quota.php @@ -22,7 +22,7 @@ */ /** - * user quota managment + * user quota management */ class OC_FileProxy_Quota extends OC_FileProxy{ @@ -57,23 +57,25 @@ class OC_FileProxy_Quota extends OC_FileProxy{ * @return int */ private function getFreeSpace($path) { - $storage=OC_Filesystem::getStorage($path); - $owner=$storage->getOwner($path); + /** + * @var \OC\Files\Storage\Storage $storage + * @var string $internalPath + */ + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($path); + $owner=$storage->getOwner($internalPath); + if (!$owner) { + return -1; + } $totalSpace=$this->getQuota($owner); if($totalSpace==-1) { return -1; } - $rootInfo=OC_FileCache::get('', "/".$owner."/files"); - // TODO Remove after merge of share_api - if (OC_FileCache::inCache('/Shared', "/".$owner."/files")) { - $sharedInfo=OC_FileCache::get('/Shared', "/".$owner."/files"); - } else { - $sharedInfo = null; - } + $view = new \OC\Files\View("/".$owner."/files"); + + $rootInfo=$view->getFileInfo('/'); $usedSpace=isset($rootInfo['size'])?$rootInfo['size']:0; - $usedSpace=isset($sharedInfo['size'])?$usedSpace-$sharedInfo['size']:$usedSpace; return $totalSpace-$usedSpace; } @@ -93,8 +95,8 @@ class OC_FileProxy_Quota extends OC_FileProxy{ } public function preCopy($path1, $path2) { - if(!self::$rootView) { - self::$rootView = new OC_FilesystemView(''); + if(!self::$rootView){ + self::$rootView = new \OC\Files\View(''); } return (self::$rootView->filesize($path1)<$this->getFreeSpace($path2) or $this->getFreeSpace($path2)==-1); } diff --git a/lib/files.php b/lib/files.php index f4e0f140a44..e3245653f99 100644 --- a/lib/files.php +++ b/lib/files.php @@ -1,144 +1,48 @@ <?php /** -* ownCloud -* -* @author Frank Karlitschek -* @copyright 2012 Frank Karlitschek frank@owncloud.org -* -* 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 <http://www.gnu.org/licenses/>. -* -*/ + * ownCloud + * + * @author Frank Karlitschek + * @copyright 2012 Frank Karlitschek frank@owncloud.org + * + * 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 <http://www.gnu.org/licenses/>. + * + */ /** * Class for fileserver access * */ class OC_Files { - static $tmpFiles=array(); + static $tmpFiles = array(); - /** - * get the filesystem info - * @param string path - * @return array - * - * returns an associative array with the following keys: - * - size - * - mtime - * - ctime - * - mimetype - * - encrypted - * - versioned - */ - public static function getFileInfo($path) { - $path = OC_Filesystem::normalizePath($path); - if (($path == '/Shared' || substr($path, 0, 8) == '/Shared/') && OC_App::isEnabled('files_sharing')) { - if ($path == '/Shared') { - list($info) = OCP\Share::getItemsSharedWith('file', OC_Share_Backend_File::FORMAT_FILE_APP_ROOT); - } else { - $info = array(); - if (OC_Filesystem::file_exists($path)) { - $info['size'] = OC_Filesystem::filesize($path); - $info['mtime'] = OC_Filesystem::filemtime($path); - $info['ctime'] = OC_Filesystem::filectime($path); - $info['mimetype'] = OC_Filesystem::getMimeType($path); - $info['encrypted'] = false; - $info['versioned'] = false; - } - } - } else { - $info = OC_FileCache::get($path); - } - return $info; - } - - /** - * get the content of a directory - * @param dir $directory path under datadirectory - */ - public static function getDirectoryContent($directory, $mimetype_filter = '') { - $directory=OC_Filesystem::normalizePath($directory); - if($directory=='/') { - $directory=''; - } - $files = array(); - if (($directory == '/Shared' || substr($directory, 0, 8) == '/Shared/') && OC_App::isEnabled('files_sharing')) { - if ($directory == '/Shared') { - $files = OCP\Share::getItemsSharedWith('file', OC_Share_Backend_File::FORMAT_FILE_APP, array('folder' => $directory, 'mimetype_filter' => $mimetype_filter)); - } else { - $pos = strpos($directory, '/', 8); - // Get shared folder name - if ($pos !== false) { - $itemTarget = substr($directory, 7, $pos - 7); - } else { - $itemTarget = substr($directory, 7); - } - $files = OCP\Share::getItemSharedWith('folder', $itemTarget, OC_Share_Backend_File::FORMAT_FILE_APP, array('folder' => $directory, 'mimetype_filter' => $mimetype_filter)); - } - } else { - $files = OC_FileCache::getFolderContent($directory, false, $mimetype_filter); - foreach ($files as &$file) { - $file['directory'] = $directory; - $file['type'] = ($file['mimetype'] == 'httpd/unix-directory') ? 'dir' : 'file'; - $permissions = OCP\PERMISSION_READ; - // NOTE: Remove check when new encryption is merged - if (!$file['encrypted']) { - $permissions |= OCP\PERMISSION_SHARE; - } - if ($file['type'] == 'dir' && $file['writable']) { - $permissions |= OCP\PERMISSION_CREATE; - } - if ($file['writable']) { - $permissions |= OCP\PERMISSION_UPDATE | OCP\PERMISSION_DELETE; - } - $file['permissions'] = $permissions; - } - if ($directory == '' && OC_App::isEnabled('files_sharing')) { - // Add 'Shared' folder - $files = array_merge($files, OCP\Share::getItemsSharedWith('file', OC_Share_Backend_File::FORMAT_FILE_APP_ROOT)); - } - } - usort($files, "fileCmp");//TODO: remove this once ajax is merged - return $files; + static public function getFileInfo($path){ + return \OC\Files\Filesystem::getFileInfo($path); } - public static function searchByMime($mimetype_filter) { - $files = array(); - $dirs_to_check = array(''); - while (!empty($dirs_to_check)) { - // get next subdir to check - $dir = array_pop($dirs_to_check); - $dir_content = self::getDirectoryContent($dir, $mimetype_filter); - foreach($dir_content as $file) { - if ($file['type'] == 'file') { - $files[] = $dir.'/'.$file['name']; - } - else { - $dirs_to_check[] = $dir.'/'.$file['name']; - } - } - } - return $files; + static public function getDirectoryContent($path){ + return \OC\Files\Filesystem::getDirectoryContent($path); } /** - * return the content of a file or return a zip file containning multiply files - * - * @param dir $dir - * @param file $file ; seperated list of files to download - * @param boolean $only_header ; boolean to only send header of the request - */ + * return the content of a file or return a zip file containing multiple files + * + * @param string $dir + * @param string $file ; separated list of files to download + * @param boolean $only_header ; boolean to only send header of the request + */ public static function get($dir, $files, $only_header = false) { $xsendfile = false; if (isset($_SERVER['MOD_X_SENDFILE_ENABLED']) || @@ -149,7 +53,7 @@ class OC_Files { $files=explode(';', $files); } - if(is_array($files)) { + if (is_array($files)) { self::validateZipDownload($dir, $files); $executionTime = intval(ini_get('max_execution_time')); set_time_limit(0); @@ -162,19 +66,20 @@ class OC_Files { if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==true) { exit("cannot open <$filename>\n"); } - foreach($files as $file) { - $file=$dir.'/'.$file; - if(OC_Filesystem::is_file($file)) { - $tmpFile=OC_Filesystem::toTmpFile($file); - self::$tmpFiles[]=$tmpFile; + foreach ($files as $file) { + $file = $dir . '/' . $file; + if (\OC\Files\Filesystem::is_file($file)) { + $tmpFile = \OC\Files\Filesystem::toTmpFile($file); + self::$tmpFiles[] = $tmpFile; $zip->addFile($tmpFile, basename($file)); - }elseif(OC_Filesystem::is_dir($file)) { + } elseif (\OC\Files\Filesystem::is_dir($file)) { self::zipAddDir($file, $zip); } } $zip->close(); + $name = basename($dir) . '.zip'; set_time_limit($executionTime); - }elseif(OC_Filesystem::is_dir($dir.'/'.$files)) { + } elseif (\OC\Files\Filesystem::is_dir($dir . '/' . $files)) { self::validateZipDownload($dir, $files); $executionTime = intval(ini_get('max_execution_time')); set_time_limit(0); @@ -187,53 +92,55 @@ class OC_Files { if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==true) { exit("cannot open <$filename>\n"); } - $file=$dir.'/'.$files; + $file = $dir . '/' . $files; self::zipAddDir($file, $zip); $zip->close(); + $name = $files . '.zip'; set_time_limit($executionTime); - }else{ - $zip=false; - $filename=$dir.'/'.$files; + } else { + $zip = false; + $filename = $dir . '/' . $files; + $name = $files; } OC_Util::obEnd(); - if($zip or OC_Filesystem::is_readable($filename)) { + if ($zip or \OC\Files\Filesystem::isReadable($filename)) { if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) { - header( 'Content-Disposition: attachment; filename="' . rawurlencode( basename($filename) ) . '"' ); + header( 'Content-Disposition: attachment; filename="' . rawurlencode($name) . '"' ); } else { - header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode( basename($filename) ) - . '; filename="' . rawurlencode( basename($filename) ) . '"' ); + header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode($name) + . '; filename="' . rawurlencode($name) . '"' ); } header('Content-Transfer-Encoding: binary'); OC_Response::disableCaching(); - if($zip) { + if ($zip) { ini_set('zlib.output_compression', 'off'); header('Content-Type: application/zip'); header('Content-Length: ' . filesize($filename)); self::addSendfileHeader($filename); }else{ - header('Content-Type: '.OC_Filesystem::getMimeType($filename)); - header("Content-Length: ".OC_Filesystem::filesize($filename)); - $storage = OC_Filesystem::getStorage($filename); - if ($storage instanceof OC_Filestorage_Local) { - self::addSendfileHeader(OC_Filesystem::getLocalFile($filename)); + header('Content-Type: '.\OC\Files\Filesystem::getMimeType($filename)); + header("Content-Length: ".\OC\Files\Filesystem::filesize($filename)); + list($storage) = \OC\Files\Filesystem::resolvePath($filename); + if ($storage instanceof \OC\File\Storage\Local) { + self::addSendfileHeader(\OC\Files\Filesystem::getLocalFile($filename)); } } - }elseif($zip or !OC_Filesystem::file_exists($filename)) { + } elseif ($zip or !\OC\Files\Filesystem::file_exists($filename)) { header("HTTP/1.0 404 Not Found"); - $tmpl = new OC_Template( '', '404', 'guest' ); - $tmpl->assign('file', $filename); + $tmpl = new OC_Template('', '404', 'guest'); + $tmpl->assign('file', $name); $tmpl->printPage(); - }else{ + } else { header("HTTP/1.0 403 Forbidden"); die('403 Forbidden'); } if($only_header) { return ; } - if($zip) { - $handle=fopen($filename, 'r'); + if ($zip) { + $handle = fopen($filename, 'r'); if ($handle) { - $chunkSize = 8*1024;// 1 MB chunks + $chunkSize = 8 * 1024; // 1 MB chunks while (!feof($handle)) { echo fread($handle, $chunkSize); flush(); @@ -243,10 +150,10 @@ class OC_Files { unlink($filename); } }else{ - OC_Filesystem::readfile($filename); + \OC\Files\Filesystem::readfile($filename); } - foreach(self::$tmpFiles as $tmpFile) { - if(file_exists($tmpFile) and is_file($tmpFile)) { + foreach (self::$tmpFiles as $tmpFile) { + if (file_exists($tmpFile) and is_file($tmpFile)) { unlink($tmpFile); } } @@ -269,97 +176,27 @@ class OC_Files { foreach($files as $file) { $filename=$file['name']; $file=$dir.'/'.$filename; - if(OC_Filesystem::is_file($file)) { - $tmpFile=OC_Filesystem::toTmpFile($file); + if(\OC\Files\Filesystem::is_file($file)) { + $tmpFile=\OC\Files\Filesystem::toTmpFile($file); OC_Files::$tmpFiles[]=$tmpFile; $zip->addFile($tmpFile, $internalDir.$filename); - }elseif(OC_Filesystem::is_dir($file)) { + }elseif(\OC\Files\Filesystem::is_dir($file)) { self::zipAddDir($file, $zip, $internalDir); } } } - /** - * move a file or folder - * - * @param dir $sourceDir - * @param file $source - * @param dir $targetDir - * @param file $target - */ - public static function move($sourceDir, $source, $targetDir, $target) { - if(OC_User::isLoggedIn() && ($sourceDir != '' || $source != 'Shared')) { - $targetFile=self::normalizePath($targetDir.'/'.$target); - $sourceFile=self::normalizePath($sourceDir.'/'.$source); - return OC_Filesystem::rename($sourceFile, $targetFile); - } else { - return false; - } - } - - /** - * copy a file or folder - * - * @param dir $sourceDir - * @param file $source - * @param dir $targetDir - * @param file $target - */ - public static function copy($sourceDir, $source, $targetDir, $target) { - if(OC_User::isLoggedIn()) { - $targetFile=$targetDir.'/'.$target; - $sourceFile=$sourceDir.'/'.$source; - return OC_Filesystem::copy($sourceFile, $targetFile); - } - } - - /** - * create a new file or folder - * - * @param dir $dir - * @param file $name - * @param type $type - */ - public static function newFile($dir, $name, $type) { - if(OC_User::isLoggedIn()) { - $file=$dir.'/'.$name; - if($type=='dir') { - return OC_Filesystem::mkdir($file); - }elseif($type=='file') { - $fileHandle=OC_Filesystem::fopen($file, 'w'); - if($fileHandle) { - fclose($fileHandle); - return true; - }else{ - return false; - } - } - } - } /** - * deletes a file or folder - * - * @param dir $dir - * @param file $name - */ - public static function delete($dir, $file) { - if(OC_User::isLoggedIn() && ($dir!= '' || $file != 'Shared')) { - $file=$dir.'/'.$file; - return OC_Filesystem::unlink($file); - } - } - - /** - * checks if the selected files are within the size constraint. If not, outputs an error page. - * - * @param dir $dir - * @param files $files - */ + * checks if the selected files are within the size constraint. If not, outputs an error page. + * + * @param dir $dir + * @param files $files + */ static function validateZipDownload($dir, $files) { - if(!OC_Config::getValue('allowZipDownload', true)) { + if (!OC_Config::getValue('allowZipDownload', true)) { $l = OC_L10N::get('lib'); header("HTTP/1.0 409 Conflict"); - $tmpl = new OC_Template( '', 'error', 'user' ); + $tmpl = new OC_Template('', 'error', 'user'); $errors = array( array( 'error' => $l->t('ZIP download is turned off.'), @@ -372,19 +209,19 @@ class OC_Files { } $zipLimit = OC_Config::getValue('maxZipInputSize', OC_Helper::computerFileSize('800 MB')); - if($zipLimit > 0) { + if ($zipLimit > 0) { $totalsize = 0; - if(is_array($files)) { - foreach($files as $file) { - $totalsize += OC_Filesystem::filesize($dir.'/'.$file); + if (is_array($files)) { + foreach ($files as $file) { + $totalsize += \OC\Files\Filesystem::filesize($dir . '/' . $file); } - }else{ - $totalsize += OC_Filesystem::filesize($dir.'/'.$files); + } else { + $totalsize += \OC\Files\Filesystem::filesize($dir . '/' . $files); } - if($totalsize > $zipLimit) { + if ($totalsize > $zipLimit) { $l = OC_L10N::get('lib'); header("HTTP/1.0 409 Conflict"); - $tmpl = new OC_Template( '', 'error', 'user' ); + $tmpl = new OC_Template('', 'error', 'user'); $errors = array( array( 'error' => $l->t('Selected files too large to generate zip file.'), @@ -399,78 +236,31 @@ class OC_Files { } /** - * try to detect the mime type of a file - * - * @param string path - * @return string guessed mime type - */ - static function getMimeType($path) { - return OC_Filesystem::getMimeType($path); - } - - /** - * get a file tree - * - * @param string path - * @return array - */ - static function getTree($path) { - return OC_Filesystem::getTree($path); - } - - /** - * pull a file from a remote server - * @param string source - * @param string token - * @param string dir - * @param string file - * @return string guessed mime type - */ - static function pull($source, $token, $dir, $file) { - $tmpfile=tempnam(get_temp_dir(), 'remoteCloudFile'); - $fp=fopen($tmpfile, 'w+'); - $url=$source.="/files/pull.php?token=$token"; - $ch=curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_FILE, $fp); - curl_exec($ch); - fclose($fp); - $info=curl_getinfo($ch); - $httpCode=$info['http_code']; - curl_close($ch); - if($httpCode==200 or $httpCode==0) { - OC_Filesystem::fromTmpFile($tmpfile, $dir.'/'.$file); - return true; - }else{ - return false; - } - } - - /** * set the maximum upload size limit for apache hosts using .htaccess + * * @param int size filesisze in bytes * @return false on failure, size on success */ static function setUploadLimit($size) { //don't allow user to break his config -- upper boundary - if($size > PHP_INT_MAX) { + if ($size > PHP_INT_MAX) { //max size is always 1 byte lower than computerFileSize returns - if($size > PHP_INT_MAX+1) + if ($size > PHP_INT_MAX + 1) return false; - $size -=1; + $size -= 1; } else { - $size=OC_Helper::humanFileSize($size); - $size=substr($size, 0, -1);//strip the B - $size=str_replace(' ', '', $size); //remove the space between the size and the postfix + $size = OC_Helper::humanFileSize($size); + $size = substr($size, 0, -1); //strip the B + $size = str_replace(' ', '', $size); //remove the space between the size and the postfix } //don't allow user to break his config -- broken or malicious size input - if(intval($size) == 0) { + if (intval($size) == 0) { return false; } - $htaccess = @file_get_contents(OC::$SERVERROOT.'/.htaccess'); //supress errors in case we don't have permissions for - if(!$htaccess) { + $htaccess = @file_get_contents(OC::$SERVERROOT . '/.htaccess'); //supress errors in case we don't have permissions for + if (!$htaccess) { return false; } @@ -479,52 +269,26 @@ class OC_Files { 'post_max_size' ); - foreach($phpValueKeys as $key) { - $pattern = '/php_value '.$key.' (\S)*/'; - $setting = 'php_value '.$key.' '.$size; - $hasReplaced = 0; - $content = preg_replace($pattern, $setting, $htaccess, 1, $hasReplaced); - if($content !== null) { + foreach ($phpValueKeys as $key) { + $pattern = '/php_value ' . $key . ' (\S)*/'; + $setting = 'php_value ' . $key . ' ' . $size; + $hasReplaced = 0; + $content = preg_replace($pattern, $setting, $htaccess, 1, $hasReplaced); + if ($content !== null) { $htaccess = $content; } - if($hasReplaced == 0) { + if ($hasReplaced == 0) { $htaccess .= "\n" . $setting; } } //check for write permissions - if(is_writable(OC::$SERVERROOT.'/.htaccess')) { - file_put_contents(OC::$SERVERROOT.'/.htaccess', $htaccess); + if (is_writable(OC::$SERVERROOT . '/.htaccess')) { + file_put_contents(OC::$SERVERROOT . '/.htaccess', $htaccess); return OC_Helper::computerFileSize($size); } else { - OC_Log::write('files', 'Can\'t write upload limit to '.OC::$SERVERROOT.'/.htaccess. Please check the file permissions', OC_Log::WARN); + OC_Log::write('files', 'Can\'t write upload limit to ' . OC::$SERVERROOT . '/.htaccess. Please check the file permissions', OC_Log::WARN); } - return false; } - - /** - * normalize a path, removing any double, add leading /, etc - * @param string $path - * @return string - */ - static public function normalizePath($path) { - $path='/'.$path; - $old=''; - while($old!=$path) {//replace any multiplicity of slashes with a single one - $old=$path; - $path=str_replace('//', '/', $path); - } - return $path; - } -} - -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{ - return strnatcasecmp($a['name'], $b['name']); - } } diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php new file mode 100644 index 00000000000..69cbaea8516 --- /dev/null +++ b/lib/files/cache/cache.php @@ -0,0 +1,521 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Cache; + +/** + * Metadata cache for the filesystem + * + * don't use this class directly if you need to get metadata, use \OC\Files\Filesystem::getFileInfo instead + */ +class Cache { + const NOT_FOUND = 0; + const PARTIAL = 1; //only partial data available, file not cached in the database + const SHALLOW = 2; //folder in cache, but not all child files are completely scanned + const COMPLETE = 3; + + /** + * @var array partial data for the cache + */ + private $partial = array(); + + /** + * @var string + */ + private $storageId; + + /** + * numeric storage id + * + * @var int $numericId + */ + private $numericId; + + private $mimetypeIds = array(); + private $mimetypes = array(); + + /** + * @param \OC\Files\Storage\Storage|string $storage + */ + public function __construct($storage) { + if ($storage instanceof \OC\Files\Storage\Storage) { + $this->storageId = $storage->getId(); + } else { + $this->storageId = $storage; + } + + $query = \OC_DB::prepare('SELECT `numeric_id` FROM `*PREFIX*storages` WHERE `id` = ?'); + $result = $query->execute(array($this->storageId)); + if ($row = $result->fetchRow()) { + $this->numericId = $row['numeric_id']; + } else { + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*storages`(`id`) VALUES(?)'); + $query->execute(array($this->storageId)); + $this->numericId = \OC_DB::insertid('*PREFIX*filecache'); + } + } + + public function getNumericStorageId() { + return $this->numericId; + } + + /** + * normalize mimetypes + * + * @param string $mime + * @return int + */ + public function getMimetypeId($mime) { + if (!isset($this->mimetypeIds[$mime])) { + $query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ?'); + $result = $query->execute(array($mime)); + if ($row = $result->fetchRow()) { + $this->mimetypeIds[$mime] = $row['id']; + } else { + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*mimetypes`(`mimetype`) VALUES(?)'); + $query->execute(array($mime)); + $this->mimetypeIds[$mime] = \OC_DB::insertid('*PREFIX*mimetypes'); + } + $this->mimetypes[$this->mimetypeIds[$mime]] = $mime; + } + return $this->mimetypeIds[$mime]; + } + + public function getMimetype($id) { + if (!isset($this->mimetypes[$id])) { + $query = \OC_DB::prepare('SELECT `mimetype` FROM `*PREFIX*mimetypes` WHERE `id` = ?'); + $result = $query->execute(array($id)); + if ($row = $result->fetchRow()) { + $this->mimetypes[$id] = $row['mimetype']; + } else { + return null; + } + } + return $this->mimetypes[$id]; + } + + /** + * get the stored metadata of a file or folder + * + * @param string/int $file + * @return array + */ + public function get($file) { + if (is_string($file) or $file == '') { + $where = 'WHERE `storage` = ? AND `path_hash` = ?'; + $params = array($this->numericId, md5($file)); + } else { //file id + $where = 'WHERE `fileid` = ?'; + $params = array($file); + } + $query = \OC_DB::prepare( + 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `etag` + FROM `*PREFIX*filecache` ' . $where); + $result = $query->execute($params); + $data = $result->fetchRow(); + + //merge partial data + if (!$data and is_string($file)) { + if (isset($this->partial[$file])) { + $data = $this->partial[$file]; + } + } else { + //fix types + $data['fileid'] = (int)$data['fileid']; + $data['size'] = (int)$data['size']; + $data['mtime'] = (int)$data['mtime']; + $data['encrypted'] = (bool)$data['encrypted']; + $data['storage'] = $this->storageId; + $data['mimetype'] = $this->getMimetype($data['mimetype']); + $data['mimepart'] = $this->getMimetype($data['mimepart']); + } + + return $data; + } + + /** + * get the metadata of all files stored in $folder + * + * @param string $folder + * @return array + */ + public function getFolderContents($folder) { + $fileId = $this->getId($folder); + if ($fileId > -1) { + $query = \OC_DB::prepare( + 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `etag` + FROM `*PREFIX*filecache` WHERE parent = ? ORDER BY `name` ASC'); + $result = $query->execute(array($fileId)); + $files = $result->fetchAll(); + foreach ($files as &$file) { + $file['mimetype'] = $this->getMimetype($file['mimetype']); + $file['mimepart'] = $this->getMimetype($file['mimepart']); + } + return $files; + } else { + return array(); + } + } + + /** + * store meta data for a file or folder + * + * @param string $file + * @param array $data + * + * @return int file id + */ + public function put($file, array $data) { + if (($id = $this->getId($file)) > -1) { + $this->update($id, $data); + return $id; + } else { + if (isset($this->partial[$file])) { //add any saved partial data + $data = array_merge($this->partial[$file], $data); + unset($this->partial[$file]); + } + + $requiredFields = array('size', 'mtime', 'mimetype'); + foreach ($requiredFields as $field) { + if (!isset($data[$field])) { //data not complete save as partial and return + $this->partial[$file] = $data; + return -1; + } + } + + $data['path'] = $file; + $data['parent'] = $this->getParentId($file); + $data['name'] = basename($file); + $data['encrypted'] = isset($data['encrypted']) ? ((int)$data['encrypted']) : 0; + + list($queryParts, $params) = $this->buildParts($data); + $queryParts[] = '`storage`'; + $params[] = $this->numericId; + $valuesPlaceholder = array_fill(0, count($queryParts), '?'); + + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*filecache`(' . implode(', ', $queryParts) . ') VALUES(' . implode(', ', $valuesPlaceholder) . ')'); + $query->execute($params); + + return (int)\OC_DB::insertid('*PREFIX*filecache'); + } + } + + /** + * update the metadata in the cache + * + * @param int $id + * @param array $data + */ + public function update($id, array $data) { + list($queryParts, $params) = $this->buildParts($data); + $params[] = $id; + + $query = \OC_DB::prepare('UPDATE `*PREFIX*filecache` SET ' . implode(' = ?, ', $queryParts) . '=? WHERE fileid = ?'); + $query->execute($params); + } + + /** + * extract query parts and params array from data array + * + * @param array $data + * @return array + */ + function buildParts(array $data) { + $fields = array('path', 'parent', 'name', 'mimetype', 'size', 'mtime', 'encrypted', 'etag'); + $params = array(); + $queryParts = array(); + foreach ($data as $name => $value) { + if (array_search($name, $fields) !== false) { + if ($name === 'path') { + $params[] = md5($value); + $queryParts[] = '`path_hash`'; + } elseif ($name === 'mimetype') { + $params[] = $this->getMimetypeId(substr($value, 0, strpos($value, '/'))); + $queryParts[] = '`mimepart`'; + $value = $this->getMimetypeId($value); + } + $params[] = $value; + $queryParts[] = '`' . $name . '`'; + } + } + return array($queryParts, $params); + } + + /** + * get the file id for a file + * + * @param string $file + * @return int + */ + public function getId($file) { + $pathHash = md5($file); + + $query = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path_hash` = ?'); + $result = $query->execute(array($this->numericId, $pathHash)); + + if ($row = $result->fetchRow()) { + return $row['fileid']; + } else { + return -1; + } + } + + /** + * get the id of the parent folder of a file + * + * @param string $file + * @return int + */ + public function getParentId($file) { + if ($file === '') { + return -1; + } else { + $parent = dirname($file); + if ($parent === '.') { + $parent = ''; + } + return $this->getId($parent); + } + } + + /** + * check if a file is available in the cache + * + * @param string $file + * @return bool + */ + public function inCache($file) { + return $this->getId($file) != -1; + } + + /** + * remove a file or folder from the cache + * + * @param string $file + */ + public function remove($file) { + $entry = $this->get($file); + if ($entry['mimetype'] === 'httpd/unix-directory') { + $children = $this->getFolderContents($file); + foreach ($children as $child) { + $this->remove($child['path']); + } + } + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*filecache` WHERE `fileid` = ?'); + $query->execute(array($entry['fileid'])); + } + + /** + * Move a file or folder in the cache + * + * @param string $source + * @param string $target + */ + public function move($source, $target) { + $sourceId = $this->getId($source); + $newParentId = $this->getParentId($target); + + //find all child entries + $query = \OC_DB::prepare('SELECT `path`, `fileid` FROM `*PREFIX*filecache` WHERE `path` LIKE ?'); + $result = $query->execute(array($source . '/%')); + $childEntries = $result->fetchAll(); + $sourceLength = strlen($source); + $query = \OC_DB::prepare('UPDATE `*PREFIX*filecache` SET `path` = ?, `path_hash` = ? WHERE `fileid` = ?'); + + foreach ($childEntries as $child) { + $targetPath = $target . substr($child['path'], $sourceLength); + $query->execute(array($targetPath, md5($targetPath), $child['fileid'])); + } + + $query = \OC_DB::prepare('UPDATE `*PREFIX*filecache` SET `path` = ?, `path_hash` = ?, `parent` =? WHERE `fileid` = ?'); + $query->execute(array($target, md5($target), $newParentId, $sourceId)); + } + + /** + * remove all entries for files that are stored on the storage from the cache + */ + public function clear() { + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*filecache` WHERE storage = ?'); + $query->execute(array($this->numericId)); + + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*storages` WHERE id = ?'); + $query->execute(array($this->storageId)); + } + + /** + * @param string $file + * + * @return int, Cache::NOT_FOUND, Cache::PARTIAL, Cache::SHALLOW or Cache::COMPLETE + */ + public function getStatus($file) { + $pathHash = md5($file); + $query = \OC_DB::prepare('SELECT `size` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path_hash` = ?'); + $result = $query->execute(array($this->numericId, $pathHash)); + if ($row = $result->fetchRow()) { + if ((int)$row['size'] === -1) { + return self::SHALLOW; + } else { + return self::COMPLETE; + } + } else { + if (isset($this->partial[$file])) { + return self::PARTIAL; + } else { + return self::NOT_FOUND; + } + } + } + + /** + * search for files matching $pattern + * + * @param string $pattern + * @return array of file data + */ + public function search($pattern) { + $query = \OC_DB::prepare(' + SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `etag` + FROM `*PREFIX*filecache` WHERE `name` LIKE ? AND `storage` = ?' + ); + $result = $query->execute(array($pattern, $this->numericId)); + $files = array(); + while ($row = $result->fetchRow()) { + $row['mimetype'] = $this->getMimetype($row['mimetype']); + $row['mimepart'] = $this->getMimetype($row['mimepart']); + $files[] = $row; + } + return $files; + } + + /** + * search for files by mimetype + * + * @param string $mimetype + * @return array + */ + public function searchByMime($mimetype) { + if (strpos($mimetype, '/')) { + $where = '`mimetype` = ?'; + } else { + $where = '`mimepart` = ?'; + } + $query = \OC_DB::prepare(' + SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `etag` + FROM `*PREFIX*filecache` WHERE ' . $where . ' AND `storage` = ?' + ); + $mimetype = $this->getMimetypeId($mimetype); + $result = $query->execute(array($mimetype, $this->numericId)); + return $result->fetchAll(); + } + + /** + * update the folder size and the size of all parent folders + * + * @param $path + */ + public function correctFolderSize($path) { + $this->calculateFolderSize($path); + if ($path !== '') { + $parent = dirname($path); + if ($parent === '.') { + $parent = ''; + } + $this->correctFolderSize($parent); + } + } + + /** + * get the size of a folder and set it in the cache + * + * @param string $path + * @return int + */ + public function calculateFolderSize($path) { + $id = $this->getId($path); + if ($id === -1) { + return 0; + } + $query = \OC_DB::prepare('SELECT `size` FROM `*PREFIX*filecache` WHERE `parent` = ? AND `storage` = ?'); + $result = $query->execute(array($id, $this->numericId)); + $totalSize = 0; + $hasChilds = 0; + while ($row = $result->fetchRow()) { + $hasChilds = true; + $size = (int)$row['size']; + if ($size === -1) { + $totalSize = -1; + break; + } else { + $totalSize += $size; + } + } + + if ($hasChilds) { + $this->update($id, array('size' => $totalSize)); + } + return $totalSize; + } + + /** + * get all file ids on the files on the storage + * + * @return int[] + */ + public function getAll() { + $query = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE `storage` = ?'); + $result = $query->execute(array($this->numericId)); + $ids = array(); + while ($row = $result->fetchRow()) { + $ids[] = $row['fileid']; + } + return $ids; + } + + /** + * find a folder in the cache which has not been fully scanned + * + * If multiply incomplete folders are in the cache, the one with the highest id will be returned, + * use the one with the highest id gives the best result with the background scanner, since that is most + * likely the folder where we stopped scanning previously + * + * @return string|bool the path of the folder or false when no folder matched + */ + public function getIncomplete() { + $query = \OC_DB::prepare('SELECT `path` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `size` = -1 ORDER BY `fileid` DESC LIMIT 1'); + $query->execute(array($this->numericId)); + if ($row = $query->fetchRow()) { + return $row['path']; + } else { + return false; + } + } + + /** + * get the storage id of the storage for a file and the internal path of the file + * + * @return array, first element holding the storage id, second the path + */ + static public function getById($id) { + $query = \OC_DB::prepare('SELECT `storage`, `path` FROM `*PREFIX*filecache` WHERE `fileid` = ?'); + $result = $query->execute(array($id)); + if ($row = $result->fetchRow()) { + $numericId = $row['storage']; + $path = $row['path']; + } else { + return null; + } + + $query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*storages` WHERE `numeric_id` = ?'); + $result = $query->execute(array($numericId)); + if ($row = $result->fetchRow()) { + return array($row['id'], $path); + } else { + return null; + } + } +} diff --git a/lib/files/cache/legacy.php b/lib/files/cache/legacy.php new file mode 100644 index 00000000000..33d4b8e7c9f --- /dev/null +++ b/lib/files/cache/legacy.php @@ -0,0 +1,81 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Cache; + +/** + * Provide read only support for the old filecache + */ +class Legacy { + private $user; + + private $cacheHasItems = null; + + public function __construct($user) { + $this->user = $user; + } + + function getCount() { + $query = \OC_DB::prepare('SELECT COUNT(`id`) AS `count` FROM `*PREFIX*fscache` WHERE `user` = ?'); + $result = $query->execute(array($this->user)); + if ($row = $result->fetchRow()) { + return $row['count']; + } else { + return 0; + } + } + + /** + * check if a legacy cache is present and holds items + * + * @return bool + */ + function hasItems() { + if (!is_null($this->cacheHasItems)) { + return $this->cacheHasItems; + } + try { + $query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*fscache` WHERE `user` = ? LIMIT 1'); + } catch (\Exception $e) { + $this->cacheHasItems = false; + return false; + } + try { + $result = $query->execute(array($this->user)); + } catch (\Exception $e) { + $this->cacheHasItems = false; + return false; + } + $this->cacheHasItems = (bool)$result->fetchRow(); + return $this->cacheHasItems; + } + + /** + * @param string|int $path + * @return array + */ + function get($path) { + if (is_numeric($path)) { + $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*fscache` WHERE `id` = ?'); + } else { + $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*fscache` WHERE `path` = ?'); + } + $result = $query->execute(array($path)); + return $result->fetchRow(); + } + + /** + * @param int $id + * @return array + */ + function getChildren($id) { + $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*fscache` WHERE `parent` = ?'); + $result = $query->execute(array($id)); + return $result->fetchAll(); + } +} diff --git a/lib/files/cache/permissions.php b/lib/files/cache/permissions.php new file mode 100644 index 00000000000..d0968337f02 --- /dev/null +++ b/lib/files/cache/permissions.php @@ -0,0 +1,102 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Cache; + +class Permissions { + /** + * @var string $storageId + */ + private $storageId; + + /** + * @param \OC\Files\Storage\Storage|string $storage + */ + public function __construct($storage){ + if($storage instanceof \OC\Files\Storage\Storage){ + $this->storageId = $storage->getId(); + }else{ + $this->storageId = $storage; + } + } + + /** + * get the permissions for a single file + * + * @param int $fileId + * @param string $user + * @return int (-1 if file no permissions set) + */ + public function get($fileId, $user) { + $query = \OC_DB::prepare('SELECT `permissions` FROM `*PREFIX*permissions` WHERE `user` = ? AND `fileid` = ?'); + $result = $query->execute(array($user, $fileId)); + if ($row = $result->fetchRow()) { + return $row['permissions']; + } else { + return -1; + } + } + + /** + * set the permissions of a file + * + * @param int $fileId + * @param string $user + * @param int $permissions + */ + public function set($fileId, $user, $permissions) { + if (self::get($fileId, $user) !== -1) { + $query = \OC_DB::prepare('UPDATE `*PREFIX*permissions` SET `permissions` = ? WHERE `user` = ? AND `fileid` = ?'); + } else { + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*permissions`(`permissions`, `user`, `fileid`) VALUES(?, ?,? )'); + } + $query->execute(array($permissions, $user, $fileId)); + } + + /** + * get the permissions of multiply files + * + * @param int[] $fileIds + * @param string $user + * @return int[] + */ + public function getMultiple($fileIds, $user) { + if (count($fileIds) === 0) { + return array(); + } + $params = $fileIds; + $params[] = $user; + $inPart = implode(', ', array_fill(0, count($fileIds), '?')); + + $query = \OC_DB::prepare('SELECT `fileid`, `permissions` FROM `*PREFIX*permissions` WHERE `fileid` IN (' . $inPart . ') AND `user` = ?'); + $result = $query->execute($params); + $filePermissions = array(); + while ($row = $result->fetchRow()) { + $filePermissions[$row['fileid']] = $row['permissions']; + } + return $filePermissions; + } + + /** + * remove the permissions for a file + * + * @param int $fileId + * @param string $user + */ + public function remove($fileId, $user) { + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*permissions` WHERE `fileid` = ? AND `user` = ?'); + $query->execute(array($fileId, $user)); + } + + public function removeMultiple($fileIds, $user) { + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*permissions` WHERE `fileid` = ? AND `user` = ?'); + foreach($fileIds as $fileId){ + $query->execute(array($fileId, $user)); + } + } +} diff --git a/lib/files/cache/scanner.php b/lib/files/cache/scanner.php new file mode 100644 index 00000000000..bf0ef01d6b3 --- /dev/null +++ b/lib/files/cache/scanner.php @@ -0,0 +1,146 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Cache; + +class Scanner { + /** + * @var \OC\Files\Storage\Storage $storage + */ + private $storage; + + /** + * @var string $storageId + */ + private $storageId; + + /** + * @var \OC\Files\Cache\Cache $cache + */ + private $cache; + + const SCAN_RECURSIVE = true; + const SCAN_SHALLOW = false; + + public function __construct(\OC\Files\Storage\Storage $storage) { + $this->storage = $storage; + $this->storageId = $this->storage->getId(); + $this->cache = $storage->getCache(); + } + + /** + * get all the metadata of a file or folder + * * + * + * @param string $path + * @return array with metadata of the file + */ + public function getData($path) { + $data = array(); + if (!$this->storage->isReadable($path)) return null; //cant read, nothing we can do + $data['mimetype'] = $this->storage->getMimeType($path); + $data['mtime'] = $this->storage->filemtime($path); + if ($data['mimetype'] == 'httpd/unix-directory') { + $data['size'] = -1; //unknown + } else { + $data['size'] = $this->storage->filesize($path); + } + $data['etag'] = $this->storage->getETag($path); + return $data; + } + + /** + * scan a single file and store it in the cache + * + * @param string $file + * @return array with metadata of the scanned file + */ + public function scanFile($file) { + \OC_Hook::emit('\OC\Files\Cache\Scanner', 'scan_file', array('path' => $file, 'storage' => $this->storageId)); + $data = $this->getData($file); + if ($data) { + if ($file) { + $parent = dirname($file); + if ($parent === '.') { + $parent = ''; + } + if (!$this->cache->inCache($parent)) { + $this->scanFile($parent); + } + } + $id = $this->cache->put($file, $data); + } + return $data; + } + + /** + * scan all the files in a folder and store them in the cache + * + * @param string $path + * @param SCAN_RECURSIVE/SCAN_SHALLOW $recursive + * @param bool $onlyChilds + * @return int the size of the scanned folder or -1 if the size is unknown at this stage + */ + public function scan($path, $recursive = self::SCAN_RECURSIVE, $onlyChilds = false) { + \OC_Hook::emit('\OC\Files\Cache\Scanner', 'scan_folder', array('path' => $path, 'storage' => $this->storageId)); + $childQueue = array(); + if (!$onlyChilds) { + $this->scanFile($path); + } + + $size = 0; + if ($dh = $this->storage->opendir($path)) { + \OC_DB::beginTransaction(); + while ($file = readdir($dh)) { + if ($file !== '.' and $file !== '..') { + $child = ($path) ? $path . '/' . $file : $file; + $data = $this->scanFile($child); + if ($data) { + if ($data['mimetype'] === 'httpd/unix-directory') { + if ($recursive === self::SCAN_RECURSIVE) { + $childQueue[] = $child; + $data['size'] = 0; + } else { + $data['size'] = -1; + } + } else { + } + if ($data['size'] === -1) { + $size = -1; + } elseif ($size !== -1) { + $size += $data['size']; + } + } + } + } + \OC_DB::commit(); + foreach ($childQueue as $child) { + $childSize = $this->scan($child, self::SCAN_RECURSIVE, true); + if ($childSize === -1) { + $size = -1; + } else { + $size += $childSize; + } + } + if ($size !== -1) { + $this->cache->put($path, array('size' => $size)); + } + } + return $size; + } + + /** + * walk over any folders that are not fully scanned yet and scan them + */ + public function backgroundScan() { + while ($path = $this->cache->getIncomplete()) { + $this->scan($path); + $this->cache->correctFolderSize($path); + } + } +} diff --git a/lib/files/cache/updater.php b/lib/files/cache/updater.php new file mode 100644 index 00000000000..d04541c219f --- /dev/null +++ b/lib/files/cache/updater.php @@ -0,0 +1,105 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Cache; + +/** + * listen to filesystem hooks and change the cache accordingly + */ +class Updater { + + /** + * resolve a path to a storage and internal path + * + * @param string $path + * @return array consisting of the storage and the internal path + */ + static public function resolvePath($path) { + $view = \OC\Files\Filesystem::getView(); + return $view->resolvePath($path); + } + + static public function writeUpdate($path) { + /** + * @var \OC\Files\Storage\Storage $storage + * @var string $internalPath + */ + list($storage, $internalPath) = self::resolvePath($path); + if ($storage) { + $cache = $storage->getCache($internalPath); + $scanner = $storage->getScanner($internalPath); + $scanner->scan($internalPath, Scanner::SCAN_SHALLOW); + $cache->correctFolderSize($internalPath); + self::correctFolder($path, $storage->filemtime($internalPath)); + } + } + + static public function deleteUpdate($path) { + /** + * @var \OC\Files\Storage\Storage $storage + * @var string $internalPath + */ + list($storage, $internalPath) = self::resolvePath($path); + if ($storage) { + $cache = $storage->getCache($internalPath); + $cache->remove($internalPath); + $cache->correctFolderSize($internalPath); + self::correctFolder($path, time()); + } + } + + /** + * Update the mtime and ETag of all parent folders + * + * @param string $path + * @param string $time + */ + static public function correctFolder($path, $time) { + if ($path !== '' && $path !== '/') { + $parent = dirname($path); + if ($parent === '.') { + $parent = ''; + } + /** + * @var \OC\Files\Storage\Storage $storage + * @var string $internalPath + */ + list($storage, $internalPath) = self::resolvePath($parent); + if ($storage) { + $cache = $storage->getCache(); + $id = $cache->getId($internalPath); + if ($id !== -1) { + $cache->update($id, array('mtime' => $time, 'etag' => $storage->getETag($internalPath))); + self::correctFolder($parent, $time); + } + } + } + } + + /** + * @param array $params + */ + static public function writeHook($params) { + self::writeUpdate($params['path']); + } + + /** + * @param array $params + */ + static public function renameHook($params) { + self::deleteUpdate($params['oldpath']); + self::writeUpdate($params['newpath']); + } + + /** + * @param array $params + */ + static public function deleteHook($params) { + self::deleteUpdate($params['path']); + } +} diff --git a/lib/files/cache/upgrade.php b/lib/files/cache/upgrade.php new file mode 100644 index 00000000000..eb8c7297c3e --- /dev/null +++ b/lib/files/cache/upgrade.php @@ -0,0 +1,159 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Cache; + +class Upgrade { + /** + * @var Legacy $legacy + */ + private $legacy; + + private $numericIds = array(); + + private $mimeTypeIds = array(); + + /** + * @param Legacy $legacy + */ + public function __construct($legacy) { + $this->legacy = $legacy; + } + + /** + * Preform a shallow upgrade + * + * @param string $path + * @param int $mode + */ + function upgradePath($path, $mode = Scanner::SCAN_RECURSIVE) { + if (!$this->legacy->hasItems()) { + return; + } + \OC_Hook::emit('\OC\Files\Cache\Upgrade', 'migrate_path', $path); + + if ($row = $this->legacy->get($path)) { + $data = $this->getNewData($row); + $this->insert($data); + + $this->upgradeChilds($data['id'], $mode); + } + } + + /** + * @param int $id + */ + function upgradeChilds($id, $mode = Scanner::SCAN_RECURSIVE) { + $children = $this->legacy->getChildren($id); + foreach ($children as $child) { + $childData = $this->getNewData($child); + \OC_Hook::emit('\OC\Files\Cache\Upgrade', 'migrate_path', $child['path']); + $this->insert($childData); + if ($mode == Scanner::SCAN_RECURSIVE) { + $this->upgradeChilds($child['id']); + } + } + } + + /** + * @param array $data the data for the new cache + */ + function insert($data) { + if (!$this->inCache($data['storage'], $data['path_hash'])) { + $insertQuery = \OC_DB::prepare('INSERT INTO `*PREFIX*filecache` + ( `fileid`, `storage`, `path`, `path_hash`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted` ) + VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); + + $insertQuery->execute(array($data['id'], $data['storage'], $data['path'], $data['path_hash'], $data['parent'], $data['name'], + $data['mimetype'], $data['mimepart'], $data['size'], $data['mtime'], $data['encrypted'])); + } + } + + /** + * @param string $storage + * @param string $pathHash + * @return bool + */ + function inCache($storage, $pathHash) { + $query = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path_hash` = ?'); + $result = $query->execute(array($storage, $pathHash)); + return (bool)$result->fetchRow(); + } + + /** + * get the new data array from the old one + * + * @param array $data the data from the old cache + * @return array + */ + function getNewData($data) { + $newData = $data; + list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($data['path']); + /** + * @var \OC\Files\Storage\Storage $storage + * @var string $internalPath; + */ + $newData['path_hash'] = md5($internalPath); + $newData['path'] = $internalPath; + $newData['storage'] = $this->getNumericId($storage); + $newData['parent'] = ($internalPath === '') ? -1 : $data['parent']; + $newData['permissions'] = ($data['writable']) ? \OCP\PERMISSION_ALL : \OCP\PERMISSION_READ; + $newData['storage_object'] = $storage; + $newData['mimetype'] = $this->getMimetypeId($newData['mimetype'], $storage); + $newData['mimepart'] = $this->getMimetypeId($newData['mimepart'], $storage); + return $newData; + } + + /** + * get the numeric storage id + * + * @param \OC\Files\Storage\Storage $storage + * @return int + */ + function getNumericId($storage) { + $storageId = $storage->getId(); + if (!isset($this->numericIds[$storageId])) { + $cache = $storage->getCache(); + $this->numericIds[$storageId] = $cache->getNumericStorageId(); + } + return $this->numericIds[$storageId]; + } + + /** + * @param string $mimetype + * @param \OC\Files\Storage\Storage $storage + * @return int + */ + function getMimetypeId($mimetype, $storage) { + if (!isset($this->mimeTypeIds[$mimetype])) { + $cache = new Cache($storage); + $this->mimeTypeIds[$mimetype] = $cache->getMimetypeId($mimetype); + } + return $this->mimeTypeIds[$mimetype]; + } + + /** + * check if a cache upgrade is required for $user + * + * @param string $user + * @return bool + */ + static function needUpgrade($user) { + $cacheVersion = (int)\OCP\Config::getUserValue($user, 'files', 'cache_version', 4); + return $cacheVersion < 5; + } + + /** + * mark the filecache as upgrade + * + * @param string $user + */ + static function upgradeDone($user) { + \OCP\Config::setUserValue($user, 'files', 'cache_version', 5); + } +} diff --git a/lib/files/cache/watcher.php b/lib/files/cache/watcher.php new file mode 100644 index 00000000000..31059ec7f56 --- /dev/null +++ b/lib/files/cache/watcher.php @@ -0,0 +1,72 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Cache; + +/** + * check the storage backends for updates and change the cache accordingly + */ +class Watcher { + /** + * @var \OC\Files\Storage\Storage $storage + */ + private $storage; + + /** + * @var Cache $cache + */ + private $cache; + + /** + * @var Scanner $scanner; + */ + private $scanner; + + /** + * @param \OC\Files\Storage\Storage $storage + */ + public function __construct(\OC\Files\Storage\Storage $storage) { + $this->storage = $storage; + $this->cache = $storage->getCache(); + $this->scanner = $storage->getScanner(); + } + + /** + * check $path for updates + * + * @param string $path + */ + public function checkUpdate($path) { + $cachedEntry = $this->cache->get($path); + if ($this->storage->hasUpdated($path, $cachedEntry['mtime'])) { + if ($this->storage->is_dir($path)) { + $this->scanner->scan($path, Scanner::SCAN_SHALLOW); + } else { + $this->scanner->scanFile($path); + } + if ($cachedEntry['mimetype'] === 'httpd/unix-directory') { + $this->cleanFolder($path); + } + $this->cache->correctFolderSize($path); + } + } + + /** + * remove deleted files in $path from the cache + * + * @param string $path + */ + public function cleanFolder($path) { + $cachedContent = $this->cache->getFolderContents($path); + foreach ($cachedContent as $entry) { + if (!$this->storage->file_exists($entry['path'])) { + $this->cache->remove($entry['path']); + } + } + } +} diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php new file mode 100644 index 00000000000..262fde320a1 --- /dev/null +++ b/lib/files/filesystem.php @@ -0,0 +1,628 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +/** + * Class for abstraction of filesystem functions + * This class won't call any filesystem functions for itself but but will pass them to the correct OC_Filestorage object + * this class should also handle all the file permission related stuff + * + * Hooks provided: + * read(path) + * write(path, &run) + * post_write(path) + * create(path, &run) (when a file is created, both create and write will be emitted in that order) + * post_create(path) + * delete(path, &run) + * post_delete(path) + * rename(oldpath,newpath, &run) + * post_rename(oldpath,newpath) + * copy(oldpath,newpath, &run) (if the newpath doesn't exists yes, copy, create and write will be emitted in that order) + * post_rename(oldpath,newpath) + * + * the &run parameter can be set to false to prevent the operation from occurring + */ + +namespace OC\Files; + +class Filesystem { + public static $loaded = false; + /** + * @var \OC\Files\View $defaultInstance + */ + static private $defaultInstance; + + + /** + * classname which used for hooks handling + * used as signalclass in OC_Hooks::emit() + */ + const CLASSNAME = 'OC_Filesystem'; + + /** + * signalname emitted before file renaming + * + * @param string $oldpath + * @param string $newpath + */ + const signal_rename = 'rename'; + + /** + * signal emitted after file renaming + * + * @param string $oldpath + * @param string $newpath + */ + const signal_post_rename = 'post_rename'; + + /** + * signal emitted before file/dir creation + * + * @param string $path + * @param bool $run changing this flag to false in hook handler will cancel event + */ + const signal_create = 'create'; + + /** + * signal emitted after file/dir creation + * + * @param string $path + * @param bool $run changing this flag to false in hook handler will cancel event + */ + const signal_post_create = 'post_create'; + + /** + * signal emits before file/dir copy + * + * @param string $oldpath + * @param string $newpath + * @param bool $run changing this flag to false in hook handler will cancel event + */ + const signal_copy = 'copy'; + + /** + * signal emits after file/dir copy + * + * @param string $oldpath + * @param string $newpath + */ + const signal_post_copy = 'post_copy'; + + /** + * signal emits before file/dir save + * + * @param string $path + * @param bool $run changing this flag to false in hook handler will cancel event + */ + const signal_write = 'write'; + + /** + * signal emits after file/dir save + * + * @param string $path + */ + const signal_post_write = 'post_write'; + + /** + * signal emits when reading file/dir + * + * @param string $path + */ + const signal_read = 'read'; + + /** + * signal emits when removing file/dir + * + * @param string $path + */ + const signal_delete = 'delete'; + + /** + * parameters definitions for signals + */ + const signal_param_path = 'path'; + const signal_param_oldpath = 'oldpath'; + const signal_param_newpath = 'newpath'; + + /** + * run - changing this flag to false in hook handler will cancel event + */ + const signal_param_run = 'run'; + + /** + * get the mountpoint of the storage object for a path + ( note: because a storage is not always mounted inside the fakeroot, the returned mountpoint is relative to the absolute root of the filesystem and doesn't take the chroot into account + * + * @param string $path + * @return string + */ + static public function getMountPoint($path) { + $mount = Mount::find($path); + if ($mount) { + return $mount->getMountPoint(); + } else { + return ''; + } + } + + /** + * get a list of all mount points in a directory + * + * @param string $path + * @return string[] + */ + static public function getMountPoints($path) { + $result = array(); + $mounts = Mount::findIn($path); + foreach ($mounts as $mount) { + $result[] = $mount->getMountPoint(); + } + return $result; + } + + /** + * get the storage mounted at $mountPoint + * + * @param string $mountPoint + * @return \OC\Files\Storage\Storage + */ + public static function getStorage($mountPoint) { + $mount = Mount::find($mountPoint); + return $mount->getStorage(); + } + + /** + * resolve a path to a storage and internal path + * + * @param string $path + * @return array consisting of the storage and the internal path + */ + static public function resolvePath($path) { + $mount = Mount::find($path); + if ($mount) { + return array($mount->getStorage(), $mount->getInternalPath($path)); + } else { + return array(null, null); + } + } + + static public function init($root) { + if (self::$defaultInstance) { + return false; + } + self::$defaultInstance = new View($root); + + //load custom mount config + self::initMountPoints(); + + self::$loaded = true; + + return true; + } + + /** + * Initialize system and personal mount points for a user + * + * @param string $user + */ + public static function initMountPoints($user = '') { + if ($user == '') { + $user = \OC_User::getUser(); + } + // Load system mount points + if (is_file(\OC::$SERVERROOT . '/config/mount.php')) { + $mountConfig = include 'config/mount.php'; + if (isset($mountConfig['global'])) { + foreach ($mountConfig['global'] as $mountPoint => $options) { + self::mount($options['class'], $options['options'], $mountPoint); + } + } + if (isset($mountConfig['group'])) { + foreach ($mountConfig['group'] as $group => $mounts) { + if (\OC_Group::inGroup($user, $group)) { + foreach ($mounts as $mountPoint => $options) { + $mountPoint = self::setUserVars($user, $mountPoint); + foreach ($options as &$option) { + $option = self::setUserVars($user, $option); + } + self::mount($options['class'], $options['options'], $mountPoint); + } + } + } + } + if (isset($mountConfig['user'])) { + foreach ($mountConfig['user'] as $mountUser => $mounts) { + if ($user === 'all' or strtolower($mountUser) === strtolower($user)) { + foreach ($mounts as $mountPoint => $options) { + $mountPoint = self::setUserVars($user, $mountPoint); + foreach ($options as &$option) { + $option = self::setUserVars($user, $option); + } + self::mount($options['class'], $options['options'], $mountPoint); + } + } + } + } + } + // Load personal mount points + $root = \OC_User::getHome($user); + self::mount('\OC\Files\Storage\Local', array('datadir' => $root), $user); + if (is_file($root . '/mount.php')) { + $mountConfig = include $root . '/mount.php'; + if (isset($mountConfig['user'][$user])) { + foreach ($mountConfig['user'][$user] as $mountPoint => $options) { + self::mount($options['class'], $options['options'], $mountPoint); + } + } + } + } + + /** + * fill in the correct values for $user, and $password placeholders + * + * @param string $input + * @param string $input + * @return string + */ + private static function setUserVars($user, $input) { + return str_replace('$user', $user, $input); + } + + /** + * get the default filesystem view + * + * @return View + */ + static public function getView() { + return self::$defaultInstance; + } + + /** + * tear down the filesystem, removing all storage providers + */ + static public function tearDown() { + self::clearMounts(); + } + + /** + * @brief get the relative path of the root data directory for the current user + * @return string + * + * Returns path like /admin/files + */ + static public function getRoot() { + return self::$defaultInstance->getRoot(); + } + + /** + * clear all mounts and storage backends + */ + public static function clearMounts() { + Mount::clear(); + } + + /** + * mount an \OC\Files\Storage\Storage in our virtual filesystem + * + * @param \OC\Files\Storage\Storage|string $class + * @param array $arguments + * @param string $mountpoint + */ + static public function mount($class, $arguments, $mountpoint) { + new Mount($class, $mountpoint, $arguments); + } + + /** + * return the path to a local version of the file + * we need this because we can't know if a file is stored local or not from outside the filestorage and for some purposes a local file is needed + * + * @param string $path + * @return string + */ + static public function getLocalFile($path) { + return self::$defaultInstance->getLocalFile($path); + } + + /** + * @param string $path + * @return string + */ + static public function getLocalFolder($path) { + return self::$defaultInstance->getLocalFolder($path); + } + + /** + * return path to file which reflects one visible in browser + * + * @param string $path + * @return string + */ + static public function getLocalPath($path) { + $datadir = \OC_User::getHome(\OC_User::getUser()) . '/files'; + $newpath = $path; + if (strncmp($newpath, $datadir, strlen($datadir)) == 0) { + $newpath = substr($path, strlen($datadir)); + } + return $newpath; + } + + /** + * check if the requested path is valid + * + * @param string $path + * @return bool + */ + static public function isValidPath($path) { + $path = self::normalizePath($path); + if (!$path || $path[0] !== '/') { + $path = '/' . $path; + } + if (strstr($path, '/../') || strrchr($path, '/') === '/..') { + return false; + } + return true; + } + + /** + * checks if a file is blacklisted for storage in the filesystem + * Listens to write and rename hooks + * + * @param array $data from hook + */ + static public function isBlacklisted($data) { + $blacklist = array('.htaccess'); + if (isset($data['path'])) { + $path = $data['path']; + } else if (isset($data['newpath'])) { + $path = $data['newpath']; + } + if (isset($path)) { + $filename = strtolower(basename($path)); + if (in_array($filename, $blacklist)) { + $data['run'] = false; + } + } + } + + /** + * following functions are equivalent to their php builtin equivalents for arguments/return values. + */ + static public function mkdir($path) { + return self::$defaultInstance->mkdir($path); + } + + static public function rmdir($path) { + return self::$defaultInstance->rmdir($path); + } + + static public function opendir($path) { + return self::$defaultInstance->opendir($path); + } + + static public function readdir($path) { + return self::$defaultInstance->readdir($path); + } + + static public function is_dir($path) { + return self::$defaultInstance->is_dir($path); + } + + static public function is_file($path) { + return self::$defaultInstance->is_file($path); + } + + static public function stat($path) { + return self::$defaultInstance->stat($path); + } + + static public function filetype($path) { + return self::$defaultInstance->filetype($path); + } + + static public function filesize($path) { + return self::$defaultInstance->filesize($path); + } + + static public function readfile($path) { + return self::$defaultInstance->readfile($path); + } + + static public function isCreatable($path) { + return self::$defaultInstance->isCreatable($path); + } + + static public function isReadable($path) { + return self::$defaultInstance->isReadable($path); + } + + static public function isUpdatable($path) { + return self::$defaultInstance->isUpdatable($path); + } + + static public function isDeletable($path) { + return self::$defaultInstance->isDeletable($path); + } + + static public function isSharable($path) { + return self::$defaultInstance->isSharable($path); + } + + static public function file_exists($path) { + return self::$defaultInstance->file_exists($path); + } + + static public function filemtime($path) { + return self::$defaultInstance->filemtime($path); + } + + static public function touch($path, $mtime = null) { + return self::$defaultInstance->touch($path, $mtime); + } + + static public function file_get_contents($path) { + return self::$defaultInstance->file_get_contents($path); + } + + static public function file_put_contents($path, $data) { + return self::$defaultInstance->file_put_contents($path, $data); + } + + static public function unlink($path) { + return self::$defaultInstance->unlink($path); + } + + static public function rename($path1, $path2) { + return self::$defaultInstance->rename($path1, $path2); + } + + static public function copy($path1, $path2) { + return self::$defaultInstance->copy($path1, $path2); + } + + static public function fopen($path, $mode) { + return self::$defaultInstance->fopen($path, $mode); + } + + static public function toTmpFile($path) { + return self::$defaultInstance->toTmpFile($path); + } + + static public function fromTmpFile($tmpFile, $path) { + return self::$defaultInstance->fromTmpFile($tmpFile, $path); + } + + static public function getMimeType($path) { + return self::$defaultInstance->getMimeType($path); + } + + static public function hash($type, $path, $raw = false) { + return self::$defaultInstance->hash($type, $path, $raw); + } + + static public function free_space($path = '/') { + return self::$defaultInstance->free_space($path); + } + + static public function search($query) { + return self::$defaultInstance->search($query); + } + + static public function searchByMime($query) { + return self::$defaultInstance->searchByMime($query); + } + + /** + * check if a file or folder has been updated since $time + * + * @param string $path + * @param int $time + * @return bool + */ + static public function hasUpdated($path, $time) { + return self::$defaultInstance->hasUpdated($path, $time); + } + + /** + * normalize a path + * + * @param string $path + * @param bool $stripTrailingSlash + * @return string + */ + public static function normalizePath($path, $stripTrailingSlash = true) { + if ($path == '') { + return '/'; + } +//no windows style slashes + $path = str_replace('\\', '/', $path); +//add leading slash + if ($path[0] !== '/') { + $path = '/' . $path; + } +//remove duplicate slashes + while (strpos($path, '//') !== false) { + $path = str_replace('//', '/', $path); + } +//remove trailing slash + if ($stripTrailingSlash and strlen($path) > 1 and substr($path, -1, 1) === '/') { + $path = substr($path, 0, -1); + } +//normalize unicode if possible + if (class_exists('Normalizer')) { + $path = \Normalizer::normalize($path); + } + return $path; + } + + /** + * get the filesystem info + * + * @param string $path + * @return array + * + * returns an associative array with the following keys: + * - size + * - mtime + * - mimetype + * - encrypted + * - versioned + */ + public static function getFileInfo($path) { + return self::$defaultInstance->getFileInfo($path); + } + + /** + * change file metadata + * + * @param string $path + * @param array $data + * @return int + * + * returns the fileid of the updated file + */ + public static function putFileInfo($path, $data) { + return self::$defaultInstance->putFileInfo($path, $data); + } + + /** + * get the content of a directory + * + * @param string $directory path under datadirectory + * @return array + */ + public static function getDirectoryContent($directory) { + return self::$defaultInstance->getDirectoryContent($directory); + } + + /** + * Get the path of a file by id + * + * Note that the resulting path is not guarantied to be unique for the id, multiple paths can point to the same file + * + * @param int $id + * @return string + */ + public static function getPath($id) { + return self::$defaultInstance->getPath($id); + } + + /** + * get the ETag for a file or folder + * + * @param string $path + * @return string + */ + static public function getETag($path) { + return self::$defaultInstance->getETag($path); + } +} + +\OC_Hook::connect('OC_Filesystem', 'post_write', '\OC\Files\Cache\Updater', 'writeHook'); +\OC_Hook::connect('OC_Filesystem', 'post_delete', '\OC\Files\Cache\Updater', 'deleteHook'); +\OC_Hook::connect('OC_Filesystem', 'post_rename', '\OC\Files\Cache\Updater', 'renameHook'); + +\OC_Util::setupFS(); diff --git a/lib/files/mount.php b/lib/files/mount.php new file mode 100644 index 00000000000..74ee483b1be --- /dev/null +++ b/lib/files/mount.php @@ -0,0 +1,188 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files; + +class Mount { + /** + * @var Mount[] + */ + static private $mounts = array(); + + /** + * @var \OC\Files\Storage\Storage $storage + */ + private $storage = null; + private $class; + private $storageId; + private $arguments = array(); + private $mountPoint; + + /** + * @param string|\OC\Files\Storage\Storage $storage + * @param string $mountpoint + * @param array $arguments (optional) + */ + public function __construct($storage, $mountpoint, $arguments = null) { + if (is_null($arguments)) { + $arguments = array(); + } + + $mountpoint = self::formatPath($mountpoint); + if ($storage instanceof \OC\Files\Storage\Storage) { + $this->class = get_class($storage); + $this->storage = $storage; + } else { + // Update old classes to new namespace + if (strpos($storage, 'OC_Filestorage_') !== false) { + $storage = '\OC\Files\Storage\\' . substr($storage, 15); + } + $this->class = $storage; + $this->arguments = $arguments; + } + $this->mountPoint = $mountpoint; + + self::$mounts[$this->mountPoint] = $this; + } + + /** + * @return string + */ + public function getMountPoint() { + return $this->mountPoint; + } + + /** + * @return \OC\Files\Storage\Storage + */ + private function createStorage() { + if (class_exists($this->class)) { + try { + return new $this->class($this->arguments); + } catch (\Exception $exception) { + \OC_Log::write('core', $exception->getMessage(), \OC_Log::ERROR); + return null; + } + } else { + \OC_Log::write('core', 'storage backend ' . $this->class . ' not found', \OC_Log::ERROR); + return null; + } + } + + /** + * @return \OC\Files\Storage\Storage + */ + public function getStorage() { + if (is_null($this->storage)) { + $this->storage = $this->createStorage(); + } + return $this->storage; + } + + /** + * @return string + */ + public function getStorageId() { + if (!$this->storageId) { + if (is_null($this->storage)) { + $this->storage = $this->createStorage(); + } + $this->storageId = $this->storage->getId(); + } + return $this->storageId; + } + + /** + * @param string $path + * @return string + */ + public function getInternalPath($path) { + if ($this->mountPoint === $path or $this->mountPoint . '/' === $path) { + $internalPath = ''; + } else { + $internalPath = substr($path, strlen($this->mountPoint)); + } + return $internalPath; + } + + /** + * @param string $path + * @return string + */ + private static function formatPath($path) { + $path = Filesystem::normalizePath($path); + if (strlen($path) > 1) { + $path .= '/'; + } + return $path; + } + + /** + * Find the mount for $path + * + * @param $path + * @return Mount + */ + public static function find($path) { + $path = self::formatPath($path); + if (isset(self::$mounts[$path])) { + return self::$mounts[$path]; + } + + \OC_Hook::emit('OC_Filesystem', 'get_mountpoint', array('path' => $path)); + $foundMountPoint = ''; + $mountPoints = array_keys(self::$mounts); + foreach ($mountPoints as $mountpoint) { + if (strpos($path, $mountpoint) === 0 and strlen($mountpoint) > strlen($foundMountPoint)) { + $foundMountPoint = $mountpoint; + } + } + if (isset(self::$mounts[$foundMountPoint])) { + return self::$mounts[$foundMountPoint]; + } else { + return null; + } + } + + /** + * Find all mounts in $path + * + * @param $path + * @return Mount[] + */ + public static function findIn($path) { + $path = self::formatPath($path); + $result = array(); + $pathLength = strlen($path); + $mountPoints = array_keys(self::$mounts); + foreach ($mountPoints as $mountPoint) { + if (substr($mountPoint, 0, $pathLength) === $path and strlen($mountPoint) > $pathLength) { + $result[] = self::$mounts[$mountPoint]; + } + } + return $result; + } + + public static function clear() { + self::$mounts = array(); + } + + /** + * @param string $id + * @return \OC\Files\Storage\Storage[] + */ + public static function findById($id) { + $result = array(); + foreach (self::$mounts as $mount) { + if ($mount->getStorageId() === $id) { + $result[] = $mount; + } + } + return $result; + } +} diff --git a/lib/filestorage/common.php b/lib/files/storage/common.php index b97eb79d8d4..591803f0440 100644 --- a/lib/filestorage/common.php +++ b/lib/files/storage/common.php @@ -1,51 +1,34 @@ <?php - /** -* ownCloud -* -* @author Michael Gapczynski -* @copyright 2012 Michael Gapczynski GapczynskiM@gmail.com -* -* 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 <http://www.gnu.org/licenses/>. -*/ + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Storage; /** * Storage backend class for providing common filesystem operation methods * which are not storage-backend specific. * - * OC_Filestorage_Common is never used directly; it is extended by all other + * \OC\Files\Storage\Common is never used directly; it is extended by all other * storage backends, where its methods may be overridden, and additional * (backend-specific) methods are defined. * - * Some OC_Filestorage_Common methods call functions which are first defined + * Some \OC\Files\Storage\Common methods call functions which are first defined * in classes which extend it, e.g. $this->stat() . */ -abstract class OC_Filestorage_Common extends OC_Filestorage { +abstract class Common implements \OC\Files\Storage\Storage { public function __construct($parameters) {} -// abstract public function mkdir($path); -// abstract public function rmdir($path); -// abstract public function opendir($path); public function is_dir($path) { return $this->filetype($path)=='dir'; } public function is_file($path) { return $this->filetype($path)=='file'; } -// abstract public function stat($path); -// abstract public function filetype($path); public function filesize($path) { if($this->is_dir($path)) { return 0;//by definition @@ -55,29 +38,40 @@ abstract class OC_Filestorage_Common extends OC_Filestorage { } } public function isCreatable($path) { - return $this->isUpdatable($path); + if ($this->is_dir($path) && $this->isUpdatable($path)) { + return true; + } + return false; } -// abstract public function isReadable($path); -// abstract public function isUpdatable($path); public function isDeletable($path) { return $this->isUpdatable($path); } public function isSharable($path) { return $this->isReadable($path); } -// abstract public function file_exists($path); - public function filectime($path) { - $stat = $this->stat($path); - return $stat['ctime']; + public function getPermissions($path){ + $permissions = 0; + if($this->isCreatable($path)){ + $permissions |= \OCP\PERMISSION_CREATE; + } + if($this->isReadable($path)){ + $permissions |= \OCP\PERMISSION_READ; + } + if($this->isUpdatable($path)){ + $permissions |= \OCP\PERMISSION_UPDATE; + } + if($this->isDeletable($path)){ + $permissions |= \OCP\PERMISSION_DELETE; + } + if($this->isSharable($path)){ + $permissions |= \OCP\PERMISSION_SHARE; + } + return $permissions; } public function filemtime($path) { $stat = $this->stat($path); return $stat['mtime']; } - public function fileatime($path) { - $stat = $this->stat($path); - return $stat['atime']; - } public function file_get_contents($path) { $handle = $this->fopen($path, "r"); if(!$handle) { @@ -89,94 +83,58 @@ abstract class OC_Filestorage_Common extends OC_Filestorage { } return fread($handle, $size); } - public function file_put_contents($path, $data) { + public function file_put_contents($path,$data) { $handle = $this->fopen($path, "w"); return fwrite($handle, $data); } -// abstract public function unlink($path); - public function rename($path1, $path2) { - if($this->copy($path1, $path2)) { + public function rename($path1,$path2) { + if($this->copy($path1,$path2)) { return $this->unlink($path1); }else{ return false; } } - public function copy($path1, $path2) { - $source=$this->fopen($path1, 'r'); - $target=$this->fopen($path2, 'w'); - $count=OC_Helper::streamCopy($source, $target); + public function copy($path1,$path2) { + $source=$this->fopen($path1,'r'); + $target=$this->fopen($path2,'w'); + $count=\OC_Helper::streamCopy($source,$target); return $count>0; } -// abstract public function fopen($path, $mode); /** * @brief Deletes all files and folders recursively within a directory - * @param $directory The directory whose contents will be deleted - * @param $empty Flag indicating whether directory will be emptied - * @returns true/false + * @param string $directory The directory whose contents will be deleted + * @param bool $empty Flag indicating whether directory will be emptied + * @returns bool * * @note By default the directory specified by $directory will be * deleted together with its contents. To avoid this set $empty to true */ public function deleteAll( $directory, $empty = false ) { - - // strip leading slash - if( substr( $directory, 0, 1 ) == "/" ) { - - $directory = substr( $directory, 1 ); - - } - - // strip trailing slash - if( substr( $directory, -1) == "/" ) { - - $directory = substr( $directory, 0, -1 ); - - } + $directory = trim($directory,'/'); if ( !$this->file_exists( \OCP\USER::getUser() . '/' . $directory ) || !$this->is_dir( \OCP\USER::getUser() . '/' . $directory ) ) { - return false; - - } elseif( !$this->is_readable( \OCP\USER::getUser() . '/' . $directory ) ) { - + } elseif( !$this->isReadable( \OCP\USER::getUser() . '/' . $directory ) ) { return false; - } else { - $directoryHandle = $this->opendir( \OCP\USER::getUser() . '/' . $directory ); - while ( $contents = readdir( $directoryHandle ) ) { - if ( $contents != '.' && $contents != '..') { - $path = $directory . "/" . $contents; - if ( $this->is_dir( $path ) ) { - - deleteAll( $path ); - + $this->deleteAll( $path ); } else { - $this->unlink( \OCP\USER::getUser() .'/' . $path ); // TODO: make unlink use same system path as is_dir - } } - } - //$this->closedir( $directoryHandle ); // TODO: implement closedir in OC_FSV - if ( $empty == false ) { - if ( !$this->rmdir( $directory ) ) { - - return false; - + return false; } - } - return true; } @@ -188,73 +146,71 @@ abstract class OC_Filestorage_Common extends OC_Filestorage { if($this->is_dir($path)) { return 'httpd/unix-directory'; } - $source=$this->fopen($path, 'r'); + $source=$this->fopen($path,'r'); if(!$source) { return false; } - $head=fread($source, 8192);//8kb should suffice to determine a mimetype - if($pos=strrpos($path, '.')) { - $extension=substr($path, $pos); + $head=fread($source,8192);//8kb should suffice to determine a mimetype + if($pos=strrpos($path,'.')) { + $extension=substr($path,$pos); }else{ $extension=''; } - $tmpFile=OC_Helper::tmpFile($extension); - file_put_contents($tmpFile, $head); - $mime=OC_Helper::getMimeType($tmpFile); + $tmpFile=\OC_Helper::tmpFile($extension); + file_put_contents($tmpFile,$head); + $mime=\OC_Helper::getMimeType($tmpFile); unlink($tmpFile); return $mime; } - public function hash($type, $path, $raw = false) { - $tmpFile=$this->getLocalFile(); - $hash=hash($type, $tmpFile, $raw); + public function hash($type,$path,$raw = false) { + $tmpFile=$this->getLocalFile($path); + $hash=hash($type,$tmpFile,$raw); unlink($tmpFile); return $hash; } -// abstract public function free_space($path); public function search($query) { return $this->searchInDir($query); } public function getLocalFile($path) { return $this->toTmpFile($path); } - private function toTmpFile($path) {//no longer in the storage api, still usefull here - $source=$this->fopen($path, 'r'); + private function toTmpFile($path) {//no longer in the storage api, still useful here + $source=$this->fopen($path,'r'); if(!$source) { return false; } - if($pos=strrpos($path, '.')) { - $extension=substr($path, $pos); + if($pos=strrpos($path,'.')) { + $extension=substr($path,$pos); }else{ $extension=''; } - $tmpFile=OC_Helper::tmpFile($extension); - $target=fopen($tmpFile, 'w'); - OC_Helper::streamCopy($source, $target); + $tmpFile=\OC_Helper::tmpFile($extension); + $target=fopen($tmpFile,'w'); + \OC_Helper::streamCopy($source,$target); return $tmpFile; } public function getLocalFolder($path) { - $baseDir=OC_Helper::tmpFolder(); - $this->addLocalFolder($path, $baseDir); + $baseDir=\OC_Helper::tmpFolder(); + $this->addLocalFolder($path,$baseDir); return $baseDir; } - private function addLocalFolder($path, $target) { + private function addLocalFolder($path,$target) { if($dh=$this->opendir($path)) { while($file=readdir($dh)) { if($file!=='.' and $file!=='..') { if($this->is_dir($path.'/'.$file)) { mkdir($target.'/'.$file); - $this->addLocalFolder($path.'/'.$file, $target.'/'.$file); + $this->addLocalFolder($path.'/'.$file,$target.'/'.$file); }else{ $tmp=$this->toTmpFile($path.'/'.$file); - rename($tmp, $target.'/'.$file); + rename($tmp,$target.'/'.$file); } } } } } -// abstract public function touch($path, $mtime=null); - protected function searchInDir($query, $dir='') { + protected function searchInDir($query,$dir='') { $files=array(); $dh=$this->opendir($dir); if($dh) { @@ -264,7 +220,7 @@ abstract class OC_Filestorage_Common extends OC_Filestorage { $files[]=$dir.'/'.$item; } if($this->is_dir($dir.'/'.$item)) { - $files=array_merge($files, $this->searchInDir($query, $dir.'/'.$item)); + $files=array_merge($files,$this->searchInDir($query,$dir.'/'.$item)); } } } @@ -273,19 +229,52 @@ abstract class OC_Filestorage_Common extends OC_Filestorage { /** * check if a file or folder has been updated since $time + * @param string $path * @param int $time * @return bool */ - public function hasUpdated($path, $time) { + public function hasUpdated($path,$time) { return $this->filemtime($path)>$time; } + public function getCache($path=''){ + return new \OC\Files\Cache\Cache($this); + } + + public function getScanner($path=''){ + return new \OC\Files\Cache\Scanner($this); + } + + public function getPermissionsCache($path=''){ + return new \OC\Files\Cache\Permissions($this); + } + + public function getWatcher($path=''){ + return new \OC\Files\Cache\Watcher($this); + } + /** * get the owner of a path - * @param $path The path to get the owner + * @param string $path The path to get the owner * @return string uid or false */ public function getOwner($path) { - return OC_User::getUser(); + return \OC_User::getUser(); + } + + /** + * get the ETag for a file or folder + * + * @param string $path + * @return string + */ + public function getETag($path){ + $ETagFunction = \OC_Connector_Sabre_Node::$ETagFunction; + if($ETagFunction) { + $hash = call_user_func($ETagFunction, $path); + return $hash; + }else{ + return uniqid(); + } } } diff --git a/lib/filestorage/commontest.php b/lib/files/storage/commontest.php index 3b038b3fda9..fbdb7fbf110 100644 --- a/lib/filestorage/commontest.php +++ b/lib/files/storage/commontest.php @@ -22,20 +22,25 @@ */ /** - * test implementation for OC_FileStorage_Common with OC_FileStorage_Local + * test implementation for \OC\Files\Storage\Common with \OC\Files\Storage\Local */ -class OC_Filestorage_CommonTest extends OC_Filestorage_Common{ +namespace OC\Files\Storage; + +class CommonTest extends \OC\Files\Storage\Common{ /** * underlying local storage used for missing functions - * @var OC_FileStorage_Local + * @var \OC\Files\Storage\Local */ private $storage; public function __construct($params) { - $this->storage=new OC_Filestorage_Local($params); + $this->storage=new \OC\Files\Storage\Local($params); } + public function getId(){ + return 'test::'.$this->storage->getId(); + } public function mkdir($path) { return $this->storage->mkdir($path); } diff --git a/lib/filestorage/local.php b/lib/files/storage/local.php index 4a4019a3224..9fc9d375bb3 100644 --- a/lib/filestorage/local.php +++ b/lib/files/storage/local.php @@ -1,8 +1,17 @@ <?php /** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * 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 OC_Filestorage_Local extends OC_Filestorage_Common{ +class Local extends \OC\Files\Storage\Common{ protected $datadir; public function __construct($arguments) { $this->datadir=$arguments['datadir']; @@ -10,6 +19,9 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{ $this->datadir.='/'; } } + public function getId(){ + return 'local::'.$this->datadir; + } public function mkdir($path) { return @mkdir($this->datadir.$path); } @@ -20,7 +32,7 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{ return opendir($this->datadir.$path); } public function is_dir($path) { - if(substr($path, -1)=='/') { + if(substr($path,-1)=='/') { $path=substr($path, 0, -1); } return is_dir($this->datadir.$path); @@ -68,9 +80,6 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{ public function file_exists($path) { return file_exists($this->datadir.$path); } - public function filectime($path) { - return filectime($this->datadir.$path); - } public function filemtime($path) { return filemtime($this->datadir.$path); } @@ -100,11 +109,11 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{ } public function rename($path1, $path2) { if (!$this->isUpdatable($path1)) { - OC_Log::write('core', 'unable to rename, file is not writable : '.$path1, OC_Log::ERROR); + \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); + \OC_Log::write('core','unable to rename, file does not exists : '.$path1,\OC_Log::ERROR); return false; } @@ -143,7 +152,7 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{ public function getMimeType($path) { if($this->isReadable($path)) { - return OC_Helper::getMimeType($this->datadir.$path); + return \OC_Helper::getMimeType($this->datadir . $path); }else{ return false; } diff --git a/lib/files/storage/storage.php b/lib/files/storage/storage.php new file mode 100644 index 00000000000..2cc835236ba --- /dev/null +++ b/lib/files/storage/storage.php @@ -0,0 +1,88 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Storage; + +/** + * Provide a common interface to all different storage options + */ +interface Storage{ + public function __construct($parameters); + public function getId(); + public function mkdir($path); + public function rmdir($path); + public function opendir($path); + public function is_dir($path); + public function is_file($path); + public function stat($path); + public function filetype($path); + public function filesize($path); + public function isCreatable($path); + public function isReadable($path); + public function isUpdatable($path); + public function isDeletable($path); + public function isSharable($path); + public function getPermissions($path); + public function file_exists($path); + public function filemtime($path); + public function file_get_contents($path); + public function file_put_contents($path,$data); + public function unlink($path); + public function rename($path1,$path2); + public function copy($path1,$path2); + public function fopen($path,$mode); + public function getMimeType($path); + public function hash($type,$path,$raw = false); + public function free_space($path); + public function search($query); + public function touch($path, $mtime=null); + public function getLocalFile($path);// get a path to a local version of the file, whether the original file is local or remote + public function getLocalFolder($path);// get a path to a local version of the folder, whether the original file is local or remote + /** + * check if a file or folder has been updated since $time + * @param int $time + * @return bool + * + * hasUpdated for folders should return at least true if a file inside the folder is add, removed or renamed. + * returning true for other changes in the folder is optional + */ + public function hasUpdated($path,$time); + + /** + * @param string $path + * @return \OC\Files\Cache\Cache + */ + public function getCache($path=''); + /** + * @param string $path + * @return \OC\Files\Cache\Scanner + */ + public function getScanner($path=''); + + public function getOwner($path); + + /** + * @param string $path + * @return \OC\Files\Cache\Permissions + */ + public function getPermissionsCache($path=''); + + /** + * @param string $path + * @return \OC\Files\Cache\Watcher + */ + public function getWatcher($path=''); + + /** + * get the ETag for a file or folder + * + * @param string $path + * @return string + */ + public function getETag($path); +} diff --git a/lib/files/storage/temporary.php b/lib/files/storage/temporary.php new file mode 100644 index 00000000000..ffc55e27507 --- /dev/null +++ b/lib/files/storage/temporary.php @@ -0,0 +1,26 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Storage; + +/** + * local storage backnd in temporary folder for testing purpores + */ +class Temporary extends Local{ + public function __construct($arguments) { + $this->datadir=\OC_Helper::tmpFolder(); + } + + public function cleanUp() { + \OC_Helper::rmdirr($this->datadir); + } + + public function __destruct() { + $this->cleanUp(); + } +} diff --git a/lib/files/stream/close.php b/lib/files/stream/close.php new file mode 100644 index 00000000000..80de3497c36 --- /dev/null +++ b/lib/files/stream/close.php @@ -0,0 +1,100 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Stream; + +/** + * stream wrapper that provides a callback on stream close + */ +class Close { + private static $callBacks = array(); + private $path = ''; + private $source; + private static $open = array(); + + public function stream_open($path, $mode, $options, &$opened_path) { + $path = substr($path, strlen('close://')); + $this->path = $path; + $this->source = fopen($path, $mode); + if (is_resource($this->source)) { + $this->meta = stream_get_meta_data($this->source); + } + self::$open[] = $path; + return is_resource($this->source); + } + + public function stream_seek($offset, $whence = SEEK_SET) { + fseek($this->source, $offset, $whence); + } + + public function stream_tell() { + return ftell($this->source); + } + + public function stream_read($count) { + return fread($this->source, $count); + } + + public function stream_write($data) { + return fwrite($this->source, $data); + } + + public function stream_set_option($option, $arg1, $arg2) { + switch ($option) { + case STREAM_OPTION_BLOCKING: + stream_set_blocking($this->source, $arg1); + break; + case STREAM_OPTION_READ_TIMEOUT: + stream_set_timeout($this->source, $arg1, $arg2); + break; + case STREAM_OPTION_WRITE_BUFFER: + stream_set_write_buffer($this->source, $arg1, $arg2); + } + } + + public function stream_stat() { + return fstat($this->source); + } + + public function stream_lock($mode) { + flock($this->source, $mode); + } + + public function stream_flush() { + return fflush($this->source); + } + + public function stream_eof() { + return feof($this->source); + } + + public function url_stat($path) { + $path = substr($path, strlen('close://')); + if (file_exists($path)) { + return stat($path); + } else { + return false; + } + } + + public function stream_close() { + fclose($this->source); + if (isset(self::$callBacks[$this->path])) { + call_user_func(self::$callBacks[$this->path], $this->path); + } + } + + public function unlink($path) { + $path = substr($path, strlen('close://')); + return unlink($path); + } + + public static function registerCallback($path, $callback) { + self::$callBacks[$path] = $callback; + } +} diff --git a/lib/files/stream/dir.php b/lib/files/stream/dir.php new file mode 100644 index 00000000000..6ca884fc994 --- /dev/null +++ b/lib/files/stream/dir.php @@ -0,0 +1,47 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Stream; + +class Dir { + private static $dirs = array(); + private $name; + private $index; + + public function dir_opendir($path, $options) { + $this->name = substr($path, strlen('fakedir://')); + $this->index = 0; + if (!isset(self::$dirs[$this->name])) { + self::$dirs[$this->name] = array(); + } + return true; + } + + public function dir_readdir() { + if ($this->index >= count(self::$dirs[$this->name])) { + return false; + } + $filename = self::$dirs[$this->name][$this->index]; + $this->index++; + return $filename; + } + + public function dir_closedir() { + $this->name = ''; + return true; + } + + public function dir_rewinddir() { + $this->index = 0; + return true; + } + + public static function register($path, $content) { + self::$dirs[$path] = $content; + } +} diff --git a/lib/files/stream/oc.php b/lib/files/stream/oc.php new file mode 100644 index 00000000000..88e7e062df9 --- /dev/null +++ b/lib/files/stream/oc.php @@ -0,0 +1,129 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Stream; + +/** + * a stream wrappers for ownCloud's virtual filesystem + */ +class OC { + /** + * @var \OC\Files\View + */ + static private $rootView; + + private $path; + private $dirSource; + private $fileSource; + private $meta; + + private function setup(){ + if (!self::$rootView) { + self::$rootView = new \OC\Files\View(''); + } + } + + public function stream_open($path, $mode, $options, &$opened_path) { + $this->setup(); + $path = substr($path, strlen('oc://')); + $this->path = $path; + $this->fileSource = self::$rootView->fopen($path, $mode); + if (is_resource($this->fileSource)) { + $this->meta = stream_get_meta_data($this->fileSource); + } + return is_resource($this->fileSource); + } + + public function stream_seek($offset, $whence = SEEK_SET) { + fseek($this->fileSource, $offset, $whence); + } + + public function stream_tell() { + return ftell($this->fileSource); + } + + public function stream_read($count) { + return fread($this->fileSource, $count); + } + + public function stream_write($data) { + return fwrite($this->fileSource, $data); + } + + public function stream_set_option($option, $arg1, $arg2) { + switch ($option) { + case STREAM_OPTION_BLOCKING: + stream_set_blocking($this->fileSource, $arg1); + break; + case STREAM_OPTION_READ_TIMEOUT: + stream_set_timeout($this->fileSource, $arg1, $arg2); + break; + case STREAM_OPTION_WRITE_BUFFER: + stream_set_write_buffer($this->fileSource, $arg1, $arg2); + } + } + + public function stream_stat() { + return fstat($this->fileSource); + } + + public function stream_lock($mode) { + flock($this->fileSource, $mode); + } + + public function stream_flush() { + return fflush($this->fileSource); + } + + public function stream_eof() { + return feof($this->fileSource); + } + + public function url_stat($path) { + $this->setup(); + $path = substr($path, strlen('oc://')); + if (self::$rootView->file_exists($path)) { + return self::$rootView->stat($path); + } else { + return false; + } + } + + public function stream_close() { + fclose($this->fileSource); + } + + public function unlink($path) { + $this->setup(); + $path = substr($path, strlen('oc://')); + return self::$rootView->unlink($path); + } + + public function dir_opendir($path, $options) { + $this->setup(); + $path = substr($path, strlen('oc://')); + $this->path = $path; + $this->dirSource = self::$rootView->opendir($path); + if (is_resource($this->dirSource)) { + $this->meta = stream_get_meta_data($this->dirSource); + } + return is_resource($this->dirSource); + } + + public function dir_readdir() { + return readdir($this->dirSource); + } + + public function dir_closedir() { + closedir($this->dirSource); + } + + public function dir_rewinddir() { + rewinddir($this->dirSource); + } +} diff --git a/lib/streamwrappers.php b/lib/files/stream/staticstream.php index 981c280f0dd..7725a6a5a04 100644 --- a/lib/streamwrappers.php +++ b/lib/files/stream/staticstream.php @@ -1,54 +1,30 @@ <?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ -class OC_FakeDirStream{ - public static $dirs=array(); - private $name; - private $index; - - public function dir_opendir($path, $options) { - $this->name=substr($path, strlen('fakedir://')); - $this->index=0; - if(!isset(self::$dirs[$this->name])) { - self::$dirs[$this->name]=array(); - } - return true; - } - - public function dir_readdir() { - if($this->index>=count(self::$dirs[$this->name])) { - return false; - } - $filename=self::$dirs[$this->name][$this->index]; - $this->index++; - return $filename; - } - - public function dir_closedir() { - $this->name=''; - return true; - } - - public function dir_rewinddir() { - $this->index=0; - return true; - } -} +namespace OC\Files\Stream; -class OC_StaticStreamWrapper { +class StaticStream { public $context; protected static $data = array(); - protected $path = ''; + protected $path = ''; protected $pointer = 0; protected $writable = false; - public function stream_close() {} + public function stream_close() { + } public function stream_eof() { return $this->pointer >= strlen(self::$data[$this->path]); } - public function stream_flush() {} + public function stream_flush() { + } public function stream_open($path, $mode, $options, &$opened_path) { switch ($mode[0]) { @@ -213,89 +189,3 @@ class OC_StaticStreamWrapper { return false; } } - -/** - * stream wrapper that provides a callback on stream close - */ -class OC_CloseStreamWrapper{ - public static $callBacks=array(); - private $path=''; - private $source; - private static $open=array(); - public function stream_open($path, $mode, $options, &$opened_path) { - $path=substr($path, strlen('close://')); - $this->path=$path; - $this->source=fopen($path, $mode); - if(is_resource($this->source)) { - $this->meta=stream_get_meta_data($this->source); - } - self::$open[]=$path; - return is_resource($this->source); - } - - public function stream_seek($offset, $whence=SEEK_SET) { - fseek($this->source, $offset, $whence); - } - - public function stream_tell() { - return ftell($this->source); - } - - public function stream_read($count) { - return fread($this->source, $count); - } - - public function stream_write($data) { - return fwrite($this->source, $data); - } - - public function stream_set_option($option, $arg1, $arg2) { - switch($option) { - case STREAM_OPTION_BLOCKING: - stream_set_blocking($this->source, $arg1); - break; - case STREAM_OPTION_READ_TIMEOUT: - stream_set_timeout($this->source, $arg1, $arg2); - break; - case STREAM_OPTION_WRITE_BUFFER: - stream_set_write_buffer($this->source, $arg1, $arg2); - } - } - - public function stream_stat() { - return fstat($this->source); - } - - public function stream_lock($mode) { - flock($this->source, $mode); - } - - public function stream_flush() { - return fflush($this->source); - } - - public function stream_eof() { - return feof($this->source); - } - - public function url_stat($path) { - $path=substr($path, strlen('close://')); - if(file_exists($path)) { - return stat($path); - }else{ - return false; - } - } - - public function stream_close() { - fclose($this->source); - if(isset(self::$callBacks[$this->path])) { - call_user_func(self::$callBacks[$this->path], $this->path); - } - } - - public function unlink($path) { - $path=substr($path, strlen('close://')); - return unlink($path); - } -} diff --git a/lib/files/view.php b/lib/files/view.php new file mode 100644 index 00000000000..302232b5134 --- /dev/null +++ b/lib/files/view.php @@ -0,0 +1,958 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +/** + * Class to provide access to ownCloud filesystem via a "view", and methods for + * working with files within that view (e.g. read, write, delete, etc.). Each + * view is restricted to a set of directories via a virtual root. The default view + * uses the currently logged in user's data directory as root (parts of + * OC_Filesystem are merely a wrapper for OC_FilesystemView). + * + * Apps that need to access files outside of the user data folders (to modify files + * belonging to a user other than the one currently logged in, for example) should + * use this class directly rather than using OC_Filesystem, or making use of PHP's + * built-in file manipulation functions. This will ensure all hooks and proxies + * are triggered correctly. + * + * Filesystem functions are not called directly; they are passed to the correct + * \OC\Files\Storage\Storage object + */ + +namespace OC\Files; + +class View { + private $fakeRoot = ''; + private $internal_path_cache = array(); + private $storage_cache = array(); + + public function __construct($root) { + $this->fakeRoot = $root; + } + + public function getAbsolutePath($path = '/') { + if (!$path) { + $path = '/'; + } + if ($path[0] !== '/') { + $path = '/' . $path; + } + return $this->fakeRoot . $path; + } + + /** + * change the root to a fake root + * + * @param string $fakeRoot + * @return bool + */ + public function chroot($fakeRoot) { + if (!$fakeRoot == '') { + if ($fakeRoot[0] !== '/') { + $fakeRoot = '/' . $fakeRoot; + } + } + $this->fakeRoot = $fakeRoot; + } + + /** + * get the fake root + * + * @return string + */ + public function getRoot() { + return $this->fakeRoot; + } + + /** + * get path relative to the root of the view + * + * @param string $path + * @return string + */ + public function getRelativePath($path) { + if ($this->fakeRoot == '') { + return $path; + } + if (strpos($path, $this->fakeRoot) !== 0) { + return null; + } else { + $path = substr($path, strlen($this->fakeRoot)); + if (strlen($path) === 0) { + return '/'; + } else { + return $path; + } + } + } + + /** + * get the mountpoint of the storage object for a path + ( note: because a storage is not always mounted inside the fakeroot, the returned mountpoint is relative to the absolute root of the filesystem and doesn't take the chroot into account + * + * @param string $path + * @return string + */ + public function getMountPoint($path) { + return Filesystem::getMountPoint($this->getAbsolutePath($path)); + } + + /** + * resolve a path to a storage and internal path + * + * @param string $path + * @return array consisting of the storage and the internal path + */ + public function resolvePath($path) { + return Filesystem::resolvePath($this->getAbsolutePath($path)); + } + + /** + * return the path to a local version of the file + * we need this because we can't know if a file is stored local or not from outside the filestorage and for some purposes a local file is needed + * + * @param string $path + * @return string + */ + public function getLocalFile($path) { + $parent = substr($path, 0, strrpos($path, '/')); + $path = $this->getAbsolutePath($path); + list($storage, $internalPath) = Filesystem::resolvePath($path); + if (Filesystem::isValidPath($parent) and $storage) { + return $storage->getLocalFile($internalPath); + } else { + return null; + } + } + + /** + * @param string $path + * @return string + */ + public function getLocalFolder($path) { + $parent = substr($path, 0, strrpos($path, '/')); + $path = $this->getAbsolutePath($path); + list($storage, $internalPath) = Filesystem::resolvePath($path); + if (Filesystem::isValidPath($parent) and $storage) { + return $storage->getLocalFolder($internalPath); + } else { + return null; + } + } + + /** + * the following functions operate with arguments and return values identical + * to those of their PHP built-in equivalents. Mostly they are merely wrappers + * for \OC\Files\Storage\Storage via basicOperation(). + */ + public function mkdir($path) { + return $this->basicOperation('mkdir', $path, array('create', 'write')); + } + + public function rmdir($path) { + return $this->basicOperation('rmdir', $path, array('delete')); + } + + public function opendir($path) { + return $this->basicOperation('opendir', $path, array('read')); + } + + public function readdir($handle) { + $fsLocal = new Storage\Local(array('datadir' => '/')); + return $fsLocal->readdir($handle); + } + + public function is_dir($path) { + if ($path == '/') { + return true; + } + return $this->basicOperation('is_dir', $path); + } + + public function is_file($path) { + if ($path == '/') { + return false; + } + return $this->basicOperation('is_file', $path); + } + + public function stat($path) { + return $this->basicOperation('stat', $path); + } + + public function filetype($path) { + return $this->basicOperation('filetype', $path); + } + + public function filesize($path) { + return $this->basicOperation('filesize', $path); + } + + public function readfile($path) { + @ob_end_clean(); + $handle = $this->fopen($path, 'rb'); + if ($handle) { + $chunkSize = 8192; // 8 MB chunks + while (!feof($handle)) { + echo fread($handle, $chunkSize); + flush(); + } + $size = $this->filesize($path); + return $size; + } + return false; + } + + public function isCreatable($path) { + return $this->basicOperation('isCreatable', $path); + } + + public function isReadable($path) { + return $this->basicOperation('isReadable', $path); + } + + public function isUpdatable($path) { + return $this->basicOperation('isUpdatable', $path); + } + + public function isDeletable($path) { + return $this->basicOperation('isDeletable', $path); + } + + public function isSharable($path) { + return $this->basicOperation('isSharable', $path); + } + + public function file_exists($path) { + if ($path == '/') { + return true; + } + return $this->basicOperation('file_exists', $path); + } + + public function filemtime($path) { + return $this->basicOperation('filemtime', $path); + } + + public function touch($path, $mtime = null) { + if (!is_null($mtime) and !is_numeric($mtime)) { + $mtime = strtotime($mtime); + } + return $this->basicOperation('touch', $path, array('write'), $mtime); + } + + public function file_get_contents($path) { + return $this->basicOperation('file_get_contents', $path, array('read')); + } + + public function file_put_contents($path, $data) { + if (is_resource($data)) { //not having to deal with streams in file_put_contents makes life easier + $absolutePath = Filesystem::normalizePath($this->getAbsolutePath($path)); + if (\OC_FileProxy::runPreProxies('file_put_contents', $absolutePath, $data) && Filesystem::isValidPath($path)) { + $path = $this->getRelativePath($absolutePath); + $exists = $this->file_exists($path); + $run = true; + if ($this->fakeRoot == Filesystem::getRoot()) { + if (!$exists) { + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_create, + array( + Filesystem::signal_param_path => $path, + Filesystem::signal_param_run => &$run + ) + ); + } + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_write, + array( + Filesystem::signal_param_path => $path, + Filesystem::signal_param_run => &$run + ) + ); + } + if (!$run) { + return false; + } + $target = $this->fopen($path, 'w'); + if ($target) { + $count = \OC_Helper::streamCopy($data, $target); + fclose($target); + fclose($data); + if ($this->fakeRoot == Filesystem::getRoot()) { + if (!$exists) { + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_post_create, + array(Filesystem::signal_param_path => $path) + ); + } + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_post_write, + array(Filesystem::signal_param_path => $path) + ); + } + \OC_FileProxy::runPostProxies('file_put_contents', $absolutePath, $count); + return $count > 0; + } else { + return false; + } + } else { + return false; + } + } else { + return $this->basicOperation('file_put_contents', $path, array('create', 'write'), $data); + } + } + + public function unlink($path) { + return $this->basicOperation('unlink', $path, array('delete')); + } + + public function deleteAll($directory, $empty = false) { + return $this->basicOperation('deleteAll', $directory, array('delete'), $empty); + } + + public function rename($path1, $path2) { + $postFix1 = (substr($path1, -1, 1) === '/') ? '/' : ''; + $postFix2 = (substr($path2, -1, 1) === '/') ? '/' : ''; + $absolutePath1 = Filesystem::normalizePath($this->getAbsolutePath($path1)); + $absolutePath2 = Filesystem::normalizePath($this->getAbsolutePath($path2)); + if (\OC_FileProxy::runPreProxies('rename', $absolutePath1, $absolutePath2) and Filesystem::isValidPath($path2)) { + $path1 = $this->getRelativePath($absolutePath1); + $path2 = $this->getRelativePath($absolutePath2); + + if ($path1 == null or $path2 == null) { + return false; + } + $run = true; + if ($this->fakeRoot == Filesystem::getRoot()) { + \OC_Hook::emit( + Filesystem::CLASSNAME, Filesystem::signal_rename, + array( + Filesystem::signal_param_oldpath => $path1, + Filesystem::signal_param_newpath => $path2, + Filesystem::signal_param_run => &$run + ) + ); + } + if ($run) { + $mp1 = $this->getMountPoint($path1 . $postFix1); + $mp2 = $this->getMountPoint($path2 . $postFix2); + if ($mp1 == $mp2) { + list($storage, $internalPath1) = Filesystem::resolvePath($absolutePath1 . $postFix1); + list(, $internalPath2) = Filesystem::resolvePath($absolutePath2 . $postFix2); + if ($storage) { + $result = $storage->rename($internalPath1, $internalPath2); + } else { + $result = false; + } + } else { + $source = $this->fopen($path1 . $postFix1, 'r'); + $target = $this->fopen($path2 . $postFix2, 'w'); + $count = \OC_Helper::streamCopy($source, $target); + list($storage1, $internalPath1) = Filesystem::resolvePath($absolutePath1 . $postFix1); + $storage1->unlink($internalPath1); + $result = $count > 0; + } + if ($this->fakeRoot == Filesystem::getRoot()) { + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_post_rename, + array( + Filesystem::signal_param_oldpath => $path1, + Filesystem::signal_param_newpath => $path2 + ) + ); + } + return $result; + } else { + return false; + } + } else { + return false; + } + } + + public function copy($path1, $path2) { + $postFix1 = (substr($path1, -1, 1) === '/') ? '/' : ''; + $postFix2 = (substr($path2, -1, 1) === '/') ? '/' : ''; + $absolutePath1 = Filesystem::normalizePath($this->getAbsolutePath($path1)); + $absolutePath2 = Filesystem::normalizePath($this->getAbsolutePath($path2)); + if (\OC_FileProxy::runPreProxies('copy', $absolutePath1, $absolutePath2) and Filesystem::isValidPath($path2)) { + $path1 = $this->getRelativePath($absolutePath1); + $path2 = $this->getRelativePath($absolutePath2); + + if ($path1 == null or $path2 == null) { + return false; + } + $run = true; + $exists = $this->file_exists($path2); + if ($this->fakeRoot == Filesystem::getRoot()) { + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_copy, + array( + Filesystem::signal_param_oldpath => $path1, + Filesystem::signal_param_newpath => $path2, + Filesystem::signal_param_run => &$run + ) + ); + if ($run and !$exists) { + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_create, + array( + Filesystem::signal_param_path => $path2, + Filesystem::signal_param_run => &$run + ) + ); + } + if ($run) { + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_write, + array( + Filesystem::signal_param_path => $path2, + Filesystem::signal_param_run => &$run + ) + ); + } + } + if ($run) { + $mp1 = $this->getMountPoint($path1 . $postFix1); + $mp2 = $this->getMountPoint($path2 . $postFix2); + if ($mp1 == $mp2) { + list($storage, $internalPath1) = Filesystem::resolvePath($absolutePath1 . $postFix1); + list(, $internalPath2) = Filesystem::resolvePath($absolutePath2 . $postFix2); + if ($storage) { + $result = $storage->copy($internalPath1, $internalPath2); + } else { + $result = false; + } + } else { + $source = $this->fopen($path1 . $postFix1, 'r'); + $target = $this->fopen($path2 . $postFix2, 'w'); + $result = \OC_Helper::streamCopy($source, $target); + } + if ($this->fakeRoot == Filesystem::getRoot()) { + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_post_copy, + array( + Filesystem::signal_param_oldpath => $path1, + Filesystem::signal_param_newpath => $path2 + ) + ); + if (!$exists) { + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_post_create, + array(Filesystem::signal_param_path => $path2) + ); + } + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_post_write, + array(Filesystem::signal_param_path => $path2) + ); + } + return $result; + } else { + return false; + } + } else { + return false; + } + } + + public function fopen($path, $mode) { + $hooks = array(); + switch ($mode) { + case 'r': + case 'rb': + $hooks[] = 'read'; + break; + case 'r+': + case 'rb+': + case 'w+': + case 'wb+': + case 'x+': + case 'xb+': + case 'a+': + case 'ab+': + $hooks[] = 'read'; + $hooks[] = 'write'; + break; + case 'w': + case 'wb': + case 'x': + case 'xb': + case 'a': + case 'ab': + $hooks[] = 'write'; + break; + default: + \OC_Log::write('core', 'invalid mode (' . $mode . ') for ' . $path, \OC_Log::ERROR); + } + + return $this->basicOperation('fopen', $path, $hooks, $mode); + } + + public function toTmpFile($path) { + if (Filesystem::isValidPath($path)) { + $source = $this->fopen($path, 'r'); + if ($source) { + $extension = ''; + $extOffset = strpos($path, '.'); + if ($extOffset !== false) { + $extension = substr($path, strrpos($path, '.')); + } + $tmpFile = \OC_Helper::tmpFile($extension); + file_put_contents($tmpFile, $source); + return $tmpFile; + } else { + return false; + } + } else { + return false; + } + } + + public function fromTmpFile($tmpFile, $path) { + if (Filesystem::isValidPath($path)) { + if (!$tmpFile) { + debug_print_backtrace(); + } + $source = fopen($tmpFile, 'r'); + if ($source) { + $this->file_put_contents($path, $source); + unlink($tmpFile); + return true; + } else { + return false; + } + } else { + return false; + } + } + + public function getMimeType($path) { + return $this->basicOperation('getMimeType', $path); + } + + public function hash($type, $path, $raw = false) { + $postFix = (substr($path, -1, 1) === '/') ? '/' : ''; + $absolutePath = Filesystem::normalizePath($this->getAbsolutePath($path)); + if (\OC_FileProxy::runPreProxies('hash', $absolutePath) && Filesystem::isValidPath($path)) { + $path = $this->getRelativePath($absolutePath); + if ($path == null) { + return false; + } + if (Filesystem::$loaded && $this->fakeRoot == Filesystem::getRoot()) { + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_read, + array(Filesystem::signal_param_path => $path) + ); + } + list($storage, $internalPath) = Filesystem::resolvePath($absolutePath . $postFix); + if ($storage) { + $result = $storage->hash($type, $internalPath, $raw); + $result = \OC_FileProxy::runPostProxies('hash', $absolutePath, $result); + return $result; + } + } + return null; + } + + public function free_space($path = '/') { + return $this->basicOperation('free_space', $path); + } + + /** + * @brief abstraction layer for basic filesystem functions: wrapper for \OC\Files\Storage\Storage + * @param string $operation + * @param string $path + * @param array $hooks (optional) + * @param mixed $extraParam (optional) + * @return mixed + * + * This method takes requests for basic filesystem functions (e.g. reading & writing + * files), processes hooks and proxies, sanitises paths, and finally passes them on to + * \OC\Files\Storage\Storage for delegation to a storage backend for execution + */ + private function basicOperation($operation, $path, $hooks = array(), $extraParam = null) { + $postFix = (substr($path, -1, 1) === '/') ? '/' : ''; + $absolutePath = Filesystem::normalizePath($this->getAbsolutePath($path)); + if (\OC_FileProxy::runPreProxies($operation, $absolutePath, $extraParam) and Filesystem::isValidPath($path)) { + $path = $this->getRelativePath($absolutePath); + if ($path == null) { + return false; + } + $run = $this->runHooks($hooks, $path); + list($storage, $internalPath) = Filesystem::resolvePath($absolutePath . $postFix); + if ($run and $storage) { + if (!is_null($extraParam)) { + $result = $storage->$operation($internalPath, $extraParam); + } else { + $result = $storage->$operation($internalPath); + } + $result = \OC_FileProxy::runPostProxies($operation, $this->getAbsolutePath($path), $result); + if (Filesystem::$loaded and $this->fakeRoot == Filesystem::getRoot()) { + if ($operation != 'fopen') { //no post hooks for fopen, the file stream is still open + $this->runHooks($hooks, $path, true); + } + } + return $result; + } + } + return null; + } + + private function runHooks($hooks, $path, $post = false) { + $prefix = ($post) ? 'post_' : ''; + $run = true; + if (Filesystem::$loaded and $this->fakeRoot == Filesystem::getRoot()) { + foreach ($hooks as $hook) { + if ($hook != 'read') { + \OC_Hook::emit( + Filesystem::CLASSNAME, + $prefix . $hook, + array( + Filesystem::signal_param_run => &$run, + Filesystem::signal_param_path => $path + ) + ); + } elseif (!$post) { + \OC_Hook::emit( + Filesystem::CLASSNAME, + $prefix . $hook, + array( + Filesystem::signal_param_path => $path + ) + ); + } + } + } + return $run; + } + + /** + * 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->basicOperation('hasUpdated', $path, array(), $time); + } + + /** + * get the filesystem info + * + * @param string $path + * @return array + * + * returns an associative array with the following keys: + * - size + * - mtime + * - mimetype + * - encrypted + * - versioned + */ + public function getFileInfo($path) { + $data = array(); + $path = Filesystem::normalizePath($this->fakeRoot . '/' . $path); + /** + * @var \OC\Files\Storage\Storage $storage + * @var string $internalPath + */ + list($storage, $internalPath) = Filesystem::resolvePath($path); + if ($storage) { + $cache = $storage->getCache($internalPath); + $permissionsCache = $storage->getPermissionsCache($internalPath); + $user = \OC_User::getUser(); + + if (!$cache->inCache($internalPath)) { + $scanner = $storage->getScanner($internalPath); + $scanner->scan($internalPath, Cache\Scanner::SCAN_SHALLOW); + } else { + $watcher = $storage->getWatcher($internalPath); + $watcher->checkUpdate($internalPath); + } + + $data = $cache->get($internalPath); + + if ($data and $data['fileid']) { + if ($data['mimetype'] === 'httpd/unix-directory') { + //add the sizes of other mountpoints to the folder + $mountPoints = Filesystem::getMountPoints($path); + foreach ($mountPoints as $mountPoint) { + $subStorage = Filesystem::getStorage($mountPoint); + if ($subStorage) { + $subCache = $subStorage->getCache(''); + $rootEntry = $subCache->get(''); + $data['size'] += $rootEntry['size']; + } + } + } + + $permissions = $permissionsCache->get($data['fileid'], $user); + if ($permissions === -1) { + $permissions = $storage->getPermissions($internalPath); + $permissionsCache->set($data['fileid'], $user, $permissions); + } + $data['permissions'] = $permissions; + } + } + return $data; + } + + /** + * get the content of a directory + * + * @param string $directory path under datadirectory + * @return array + */ + public function getDirectoryContent($directory, $mimetype_filter = '') { + $result = array(); + $path = Filesystem::normalizePath($this->fakeRoot . '/' . $directory); + /** + * @var \OC\Files\Storage\Storage $storage + * @var string $internalPath + */ + list($storage, $internalPath) = Filesystem::resolvePath($path); + if ($storage) { + $cache = $storage->getCache($internalPath); + $permissionsCache = $storage->getPermissionsCache($internalPath); + $user = \OC_User::getUser(); + + if ($cache->getStatus($internalPath) < Cache\Cache::COMPLETE) { + $scanner = $storage->getScanner($internalPath); + $scanner->scan($internalPath, Cache\Scanner::SCAN_SHALLOW); + } else { + $watcher = $storage->getWatcher($internalPath); + $watcher->checkUpdate($internalPath); + } + + $files = $cache->getFolderContents($internalPath); //TODO: mimetype_filter + + $ids = array(); + foreach ($files as $i => $file) { + $files[$i]['type'] = $file['mimetype'] === 'httpd/unix-directory' ? 'dir' : 'file'; + $ids[] = $file['fileid']; + + $permissions = $permissionsCache->get($file['fileid'], $user); + if ($permissions === -1) { + $permissions = $storage->getPermissions($file['path']); + $permissionsCache->set($file['fileid'], $user, $permissions); + } + $files[$i]['permissions'] = $permissions; + } + + //add a folder for any mountpoint in this directory and add the sizes of other mountpoints to the folders + $mountPoints = Filesystem::getMountPoints($path); + $dirLength = strlen($path); + foreach ($mountPoints as $mountPoint) { + $subStorage = Filesystem::getStorage($mountPoint); + if ($subStorage) { + $subCache = $subStorage->getCache(''); + + if ($subCache->getStatus('') === Cache\Cache::NOT_FOUND) { + $subScanner = $subStorage->getScanner(''); + $subScanner->scanFile(''); + } + + $rootEntry = $subCache->get(''); + if ($rootEntry) { + $relativePath = trim(substr($mountPoint, $dirLength), '/'); + if ($pos = strpos($relativePath, '/')) { //mountpoint inside subfolder add size to the correct folder + $entryName = substr($relativePath, 0, $pos); + foreach ($files as &$entry) { + if ($entry['name'] === $entryName) { + $entry['size'] += $rootEntry['size']; + } + } + } else { //mountpoint in this folder, add an entry for it + $rootEntry['name'] = $relativePath; + $rootEntry['type'] = $rootEntry['mimetype'] === 'httpd/unix-directory' ? 'dir' : 'file'; + $subPermissionsCache = $subStorage->getPermissionsCache(''); + $permissions = $subPermissionsCache->get($rootEntry['fileid'], $user); + if ($permissions === -1) { + $permissions = $subStorage->getPermissions($rootEntry['path']); + $subPermissionsCache->set($rootEntry['fileid'], $user, $permissions); + } + $rootEntry['permissions'] = $permissions; + + //remove any existing entry with the same name + foreach ($files as $i => $file) { + if ($file['name'] === $rootEntry['name']) { + unset($files[$i]); + break; + } + } + $files[] = $rootEntry; + } + } + } + } + + if ($mimetype_filter) { + foreach ($files as $file) { + if (strpos($mimetype_filter, '/')) { + if ($file['mimetype'] === $mimetype_filter) { + $result[] = $file; + } + } else { + if ($file['mimepart'] === $mimetype_filter) { + $result[] = $file; + } + } + } + } else { + $result = $files; + } + } + return $result; + } + + /** + * change file metadata + * + * @param string $path + * @param array $data + * @return int + * + * returns the fileid of the updated file + */ + public function putFileInfo($path, $data) { + $path = Filesystem::normalizePath($this->fakeRoot . '/' . $path); + /** + * @var \OC\Files\Storage\Storage $storage + * @var string $internalPath + */ + list($storage, $internalPath) = Filesystem::resolvePath($path); + if ($storage) { + $cache = $storage->getCache($path); + + if (!$cache->inCache($internalPath)) { + $scanner = $storage->getScanner($internalPath); + $scanner->scan($internalPath, Cache\Scanner::SCAN_SHALLOW); + } + + return $cache->put($internalPath, $data); + } else { + return -1; + } + } + + /** + * search for files with the name matching $query + * + * @param string $query + * @return array + */ + public function search($query) { + return $this->searchCommon('%' . $query . '%', 'search'); + } + + /** + * search for files by mimetype + * + * @param string $query + * @return array + */ + public function searchByMime($mimetype) { + return $this->searchCommon($mimetype, 'searchByMime'); + } + + /** + * @param string $query + * @param string $method + * @return array + */ + private function searchCommon($query, $method) { + $files = array(); + $rootLength = strlen($this->fakeRoot); + + $mountPoint = Filesystem::getMountPoint($this->fakeRoot); + $storage = Filesystem::getStorage($mountPoint); + if ($storage) { + $cache = $storage->getCache(''); + + $results = $cache->$method($query); + foreach ($results as $result) { + if (substr($mountPoint . $result['path'], 0, $rootLength) === $this->fakeRoot) { + $result['path'] = substr($mountPoint . $result['path'], $rootLength); + $files[] = $result; + } + } + + $mountPoints = Filesystem::getMountPoints($this->fakeRoot); + foreach ($mountPoints as $mountPoint) { + $storage = Filesystem::getStorage($mountPoint); + if ($storage) { + $cache = $storage->getCache(''); + + $relativeMountPoint = substr($mountPoint, $rootLength); + $results = $cache->$method($query); + foreach ($results as $result) { + $result['path'] = $relativeMountPoint . $result['path']; + $files[] = $result; + } + } + } + } + return $files; + } + + /** + * get the ETag for a file or folder + * + * @param string $path + * @return string + */ + public function getETag($path) { + /** + * @var Storage\Storage $storage + * @var string $internalPath + */ + list($storage, $internalPath) = $this->resolvePath($path); + if ($storage) { + return $storage->getETag($internalPath); + } else { + return null; + } + } + + /** + * Get the path of a file by id, relative to the view + * + * Note that the resulting path is not guarantied to be unique for the id, multiple paths can point to the same file + * + * @param int $id + * @return string + */ + public function getPath($id) { + list($storage, $internalPath) = Cache\Cache::getById($id); + $mounts = Mount::findById($storage); + foreach ($mounts as $mount) { + /** + * @var \OC\Files\Mount $mount + */ + $fullPath = $mount->getMountPoint() . $internalPath; + if (!is_null($path = $this->getRelativePath($fullPath))) { + return $path; + } + } + return null; + } +} diff --git a/lib/filestorage.php b/lib/filestorage.php deleted file mode 100644 index 2e03c4cb6da..00000000000 --- a/lib/filestorage.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -/** -* ownCloud -* -* @author Frank Karlitschek -* @copyright 2012 Frank Karlitschek frank@owncloud.org -* -* 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 <http://www.gnu.org/licenses/>. -*/ - -/** - * Provide a common interface to all different storage options - */ -abstract class OC_Filestorage{ - abstract public function __construct($parameters); - abstract public function mkdir($path); - abstract public function rmdir($path); - abstract public function opendir($path); - abstract public function is_dir($path); - abstract public function is_file($path); - abstract public function stat($path); - abstract public function filetype($path); - abstract public function filesize($path); - abstract public function isCreatable($path); - abstract public function isReadable($path); - abstract public function isUpdatable($path); - abstract public function isDeletable($path); - abstract public function isSharable($path); - abstract public function file_exists($path); - abstract public function filectime($path); - abstract public function filemtime($path); - abstract public function file_get_contents($path); - abstract public function file_put_contents($path, $data); - abstract public function unlink($path); - abstract public function rename($path1, $path2); - abstract public function copy($path1, $path2); - abstract public function fopen($path, $mode); - abstract public function getMimeType($path); - abstract public function hash($type, $path, $raw = false); - abstract public function free_space($path); - abstract public function search($query); - abstract public function touch($path, $mtime=null); - abstract public function getLocalFile($path);// get a path to a local version of the file, whether the original file is local or remote - abstract public function getLocalFolder($path);// get a path to a local version of the folder, whether the original file is local or remote - /** - * check if a file or folder has been updated since $time - * @param int $time - * @return bool - * - * hasUpdated for folders should return at least true if a file inside the folder is add, removed or renamed. - * returning true for other changes in the folder is optional - */ - abstract public function hasUpdated($path, $time); - abstract public function getOwner($path); -} diff --git a/lib/filestorage/temporary.php b/lib/filestorage/temporary.php deleted file mode 100644 index 876ba045a63..00000000000 --- a/lib/filestorage/temporary.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php -/** - * local storage backnd in temporary folder for testing purpores - */ -class OC_Filestorage_Temporary extends OC_Filestorage_Local{ - public function __construct($arguments) { - $this->datadir=OC_Helper::tmpFolder(); - } - - public function cleanUp() { - OC_Helper::rmdirr($this->datadir); - } - - public function __destruct() { - $this->cleanUp(); - } -} diff --git a/lib/filesystem.php b/lib/filesystem.php index f185d777def..57cca902303 100644 --- a/lib/filesystem.php +++ b/lib/filesystem.php @@ -1,26 +1,11 @@ <?php /** -* ownCloud -* -* @author Frank Karlitschek -* @copyright 2012 Frank Karlitschek frank@owncloud.org -* -* 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 <http://www.gnu.org/licenses/>. -* -*/ - + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ /** * Class for abstraction of filesystem functions @@ -31,578 +16,397 @@ * read(path) * write(path, &run) * post_write(path) - * create(path, &run) (when a file is created, both create and write will be emited in that order) + * create(path, &run) (when a file is created, both create and write will be emitted in that order) * post_create(path) * delete(path, &run) * post_delete(path) - * rename(oldpath, newpath, &run) - * post_rename(oldpath, newpath) - * copy(oldpath, newpath, &run) (if the newpath doesn't exists yes, copy, create and write will be emited in that order) - * post_rename(oldpath, newpath) + * rename(oldpath,newpath, &run) + * post_rename(oldpath,newpath) + * copy(oldpath,newpath, &run) (if the newpath doesn't exists yes, copy, create and write will be emitted in that order) + * post_rename(oldpath,newpath) * - * the &run parameter can be set to false to prevent the operation from occuring + * the &run parameter can be set to false to prevent the operation from occurring */ -class OC_Filesystem{ - static private $storages=array(); - static private $mounts=array(); - static private $loadedUsers=array(); - public static $loaded=false; - /** - * @var OC_Filestorage $defaultInstance - */ - static private $defaultInstance; - - - /** - * classname which used for hooks handling - * used as signalclass in OC_Hooks::emit() - */ - const CLASSNAME = 'OC_Filesystem'; - - /** - * signalname emited before file renaming - * @param oldpath - * @param newpath - */ - const signal_rename = 'rename'; - - /** - * signal emited after file renaming - * @param oldpath - * @param newpath - */ - const signal_post_rename = 'post_rename'; - - /** - * signal emited before file/dir creation - * @param path - * @param run changing this flag to false in hook handler will cancel event - */ - const signal_create = 'create'; - - /** - * signal emited after file/dir creation - * @param path - * @param run changing this flag to false in hook handler will cancel event - */ - const signal_post_create = 'post_create'; - - /** - * signal emits before file/dir copy - * @param oldpath - * @param newpath - * @param run changing this flag to false in hook handler will cancel event - */ - const signal_copy = 'copy'; - - /** - * signal emits after file/dir copy - * @param oldpath - * @param newpath - */ - const signal_post_copy = 'post_copy'; - - /** - * signal emits before file/dir save - * @param path - * @param run changing this flag to false in hook handler will cancel event - */ - const signal_write = 'write'; - - /** - * signal emits after file/dir save - * @param path - */ - const signal_post_write = 'post_write'; - - /** - * signal emits when reading file/dir - * @param path - */ - const signal_read = 'read'; - - /** - * signal emits when removing file/dir - * @param path - */ - const signal_delete = 'delete'; - +/** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ +class OC_Filesystem { /** - * parameters definitions for signals + * get the mountpoint of the storage object for a path + ( note: because a storage is not always mounted inside the fakeroot, the returned mountpoint is relative to the absolute root of the filesystem and doesn't take the chroot into account + * + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + * @param string $path + * @return string */ - const signal_param_path = 'path'; - const signal_param_oldpath = 'oldpath'; - const signal_param_newpath = 'newpath'; + static public function getMountPoint($path) { + return \OC\Files\Filesystem::getMountPoint($path); + } /** - * run - changing this flag to false in hook handler will cancel event + * resolve a path to a storage and internal path + * + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + * @param string $path + * @return array consisting of the storage and the internal path */ - const signal_param_run = 'run'; + static public function resolvePath($path) { + return \OC\Files\Filesystem::resolvePath($path); + } /** - * get the mountpoint of the storage object for a path - ( note: because a storage is not always mounted inside the fakeroot, the returned mountpoint is relative to the absolute root of the filesystem and doesn't take the chroot into account - * - * @param string path - * @return string + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem */ - static public function getMountPoint($path) { - OC_Hook::emit(self::CLASSNAME, 'get_mountpoint', array('path'=>$path)); - if(!$path) { - $path='/'; - } - if($path[0]!=='/') { - $path='/'.$path; - } - $path=str_replace('//', '/', $path); - $foundMountPoint=''; - $mountPoints=array_keys(OC_Filesystem::$mounts); - foreach($mountPoints as $mountpoint) { - if($mountpoint==$path) { - return $mountpoint; - } - if(strpos($path, $mountpoint)===0 and strlen($mountpoint)>strlen($foundMountPoint)) { - $foundMountPoint=$mountpoint; - } - } - return $foundMountPoint; - } - - /** - * get the part of the path relative to the mountpoint of the storage it's stored in - * @param string path - * @return bool - */ - static public function getInternalPath($path) { - $mountPoint=self::getMountPoint($path); - $internalPath=substr($path, strlen($mountPoint)); - return $internalPath; - } - - static private function mountPointsLoaded($user) { - return in_array($user, self::$loadedUsers); - } - - /** - * get the storage object for a path - * @param string path - * @return OC_Filestorage - */ - static public function getStorage($path) { - $user = ltrim(substr($path, 0, strpos($path, '/', 1)), '/'); - // check mount points if file was shared from a different user - if ($user != OC_User::getUser() && !self::mountPointsLoaded($user)) { - OC_Util::loadUserMountPoints($user); - self::loadSystemMountPoints($user); - self::$loadedUsers[] = $user; - } - - $mountpoint=self::getMountPoint($path); - if($mountpoint) { - if(!isset(OC_Filesystem::$storages[$mountpoint])) { - $mount=OC_Filesystem::$mounts[$mountpoint]; - OC_Filesystem::$storages[$mountpoint]=OC_Filesystem::createStorage($mount['class'], $mount['arguments']); - } - return OC_Filesystem::$storages[$mountpoint]; - } - } - - static private function loadSystemMountPoints($user) { - if(is_file(OC::$SERVERROOT.'/config/mount.php')) { - $mountConfig=include OC::$SERVERROOT.'/config/mount.php'; - if(isset($mountConfig['global'])) { - foreach($mountConfig['global'] as $mountPoint=>$options) { - self::mount($options['class'], $options['options'], $mountPoint); - } - } - - if(isset($mountConfig['group'])) { - foreach($mountConfig['group'] as $group=>$mounts) { - if(OC_Group::inGroup($user, $group)) { - foreach($mounts as $mountPoint=>$options) { - $mountPoint=self::setUserVars($mountPoint, $user); - foreach($options as &$option) { - $option=self::setUserVars($option, $user); - } - self::mount($options['class'], $options['options'], $mountPoint); - } - } - } - } - - if(isset($mountConfig['user'])) { - foreach($mountConfig['user'] as $mountUser=>$mounts) { - if($user==='all' or strtolower($mountUser)===strtolower($user)) { - foreach($mounts as $mountPoint=>$options) { - $mountPoint=self::setUserVars($mountPoint, $user); - foreach($options as &$option) { - $option=self::setUserVars($option, $user); - } - self::mount($options['class'], $options['options'], $mountPoint); - } - } - } - } - - $mtime=filemtime(OC::$SERVERROOT.'/config/mount.php'); - $previousMTime=OC_Appconfig::getValue('files', 'mountconfigmtime', 0); - if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated - OC_FileCache::triggerUpdate(); - OC_Appconfig::setValue('files', 'mountconfigmtime', $mtime); - } - } - } - - static public function init($root, $user = '') { - if(self::$defaultInstance) { - return false; - } - self::$defaultInstance=new OC_FilesystemView($root); - - //load custom mount config - if (!isset($user)) { - $user = OC_User::getUser(); - } - self::loadSystemMountPoints($user); - - self::$loaded=true; - } - - /** - * fill in the correct values for $user, and $password placeholders - * @param string intput - * @return string - */ - private static function setUserVars($input, $user) { - if (isset($user)) { - return str_replace('$user', $user, $input); - } else { - return str_replace('$user', OC_User::getUser(), $input); - } + static public function init($root) { + return \OC\Files\Filesystem::init($root); } /** * get the default filesystem view - * @return OC_FilesystemView + * + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + * @return \OC\Files\View */ static public function getView() { - return self::$defaultInstance; + return \OC\Files\Filesystem::getView(); } /** * tear down the filesystem, removing all storage providers + * + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem */ static public function tearDown() { - self::$storages=array(); - } - - /** - * create a new storage of a specific type - * @param string type - * @param array arguments - * @return OC_Filestorage - */ - static private function createStorage($class, $arguments) { - if(class_exists($class)) { - try { - return new $class($arguments); - } catch (Exception $exception) { - OC_Log::write('core', $exception->getMessage(), OC_Log::ERROR); - return false; - } - }else{ - OC_Log::write('core', 'storage backend '.$class.' not found', OC_Log::ERROR); - return false; - } - } - - /** - * change the root to a fake root - * @param string fakeRoot - * @return bool - */ - static public function chroot($fakeRoot) { - return self::$defaultInstance->chroot($fakeRoot); + \OC\Files\Filesystem::tearDown(); } /** * @brief get the relative path of the root data directory for the current user * @return string * + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem * Returns path like /admin/files */ static public function getRoot() { - return self::$defaultInstance->getRoot(); + return \OC\Files\Filesystem::getRoot(); } /** * clear all mounts and storage backends + * + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem */ public static function clearMounts() { - self::$mounts=array(); - self::$storages=array(); + \OC\Files\Filesystem::clearMounts(); } /** - * mount an OC_Filestorage in our virtual filesystem - * @param OC_Filestorage storage - * @param string mountpoint - */ + * mount an \OC\Files\Storage\Storage in our virtual filesystem + * + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + * @param \OC\Files\Storage\Storage $class + * @param array $arguments + * @param string $mountpoint + */ static public function mount($class, $arguments, $mountpoint) { - if($mountpoint[0]!='/') { - $mountpoint='/'.$mountpoint; - } - if(substr($mountpoint, -1)!=='/') { - $mountpoint=$mountpoint.'/'; - } - self::$mounts[$mountpoint]=array('class'=>$class, 'arguments'=>$arguments); + \OC\Files\Filesystem::mount($class, $arguments, $mountpoint); } /** - * return the path to a local version of the file - * we need this because we can't know if a file is stored local or not from outside the filestorage and for some purposes a local file is needed - * @param string path - * @return string - */ + * return the path to a local version of the file + * we need this because we can't know if a file is stored local or not from outside the filestorage and for some purposes a local file is needed + * + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + * @param string $path + * @return string + */ static public function getLocalFile($path) { - return self::$defaultInstance->getLocalFile($path); + return \OC\Files\Filesystem::getLocalFile($path); } + /** - * @param string path + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + * @param string $path * @return string */ static public function getLocalFolder($path) { - return self::$defaultInstance->getLocalFolder($path); + return \OC\Files\Filesystem::getLocalFolder($path); } /** - * return path to file which reflects one visible in browser - * @param string path - * @return string - */ + * return path to file which reflects one visible in browser + * + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + * @param string $path + * @return string + */ static public function getLocalPath($path) { - $datadir = OC_User::getHome(OC_User::getUser()).'/files'; - $newpath = $path; - if (strncmp($newpath, $datadir, strlen($datadir)) == 0) { - $newpath = substr($path, strlen($datadir)); - } - return $newpath; + return \OC\Files\Filesystem::getLocalPath($path); } /** * check if the requested path is valid - * @param string path + * + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + * @param string $path * @return bool */ static public function isValidPath($path) { - $path = self::normalizePath($path); - if(!$path || $path[0]!=='/') { - $path='/'.$path; - } - if(strstr($path, '/../') || strrchr($path, '/') === '/..' ) { - return false; - } - if(self::isFileBlacklisted($path)) { - return false; - } - return true; + return \OC\Files\Filesystem::isValidPath($path); } /** - * checks if a file is blacklsited for storage in the filesystem + * checks if a file is blacklisted for storage in the filesystem * Listens to write and rename hooks + * + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem * @param array $data from hook */ static public function isBlacklisted($data) { - if (isset($data['path'])) { - $path = $data['path']; - } else if (isset($data['newpath'])) { - $path = $data['newpath']; - } - if (isset($path)) { - $data['run'] = !self::isFileBlacklisted($path); - } - } - - static public function isFileBlacklisted($path) { - $blacklist = array('.htaccess'); - $filename = strtolower(basename($path)); - return in_array($filename, $blacklist); + \OC\Files\Filesystem::isBlacklisted($data); } /** - * following functions are equivilent to their php buildin equivilents for arguments/return values. + * following functions are equivalent to their php builtin equivalents for arguments/return values. + * + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem */ static public function mkdir($path) { - return self::$defaultInstance->mkdir($path); + return \OC\Files\Filesystem::mkdir($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function rmdir($path) { - return self::$defaultInstance->rmdir($path); + return \OC\Files\Filesystem::rmdir($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function opendir($path) { - return self::$defaultInstance->opendir($path); + return \OC\Files\Filesystem::opendir($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function readdir($path) { - return self::$defaultInstance->readdir($path); + return \OC\Files\Filesystem::readdir($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function is_dir($path) { - return self::$defaultInstance->is_dir($path); + return \OC\Files\Filesystem::is_dir($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function is_file($path) { - return self::$defaultInstance->is_file($path); + return \OC\Files\Filesystem::is_file($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function stat($path) { - return self::$defaultInstance->stat($path); + return \OC\Files\Filesystem::stat($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function filetype($path) { - return self::$defaultInstance->filetype($path); + return \OC\Files\Filesystem::filetype($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function filesize($path) { - return self::$defaultInstance->filesize($path); + return \OC\Files\Filesystem::filesize($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function readfile($path) { - return self::$defaultInstance->readfile($path); + return \OC\Files\Filesystem::readfile($path); } + /** - * @deprecated Replaced by isReadable() as part of CRUDS - */ + * @deprecated Replaced by isReadable() as part of CRUDS + */ static public function is_readable($path) { - return self::$defaultInstance->is_readable($path); + return \OC\Files\Filesystem::isReadable($path); } + /** - * @deprecated Replaced by isCreatable(), isUpdatable(), isDeletable() as part of CRUDS - */ - static public function is_writable($path) { - return self::$defaultInstance->is_writable($path); - } + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function isCreatable($path) { - return self::$defaultInstance->isCreatable($path); + return \OC\Files\Filesystem::isCreatable($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function isReadable($path) { - return self::$defaultInstance->isReadable($path); + return \OC\Files\Filesystem::isReadable($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function isUpdatable($path) { - return self::$defaultInstance->isUpdatable($path); + return \OC\Files\Filesystem::isUpdatable($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function isDeletable($path) { - return self::$defaultInstance->isDeletable($path); + return \OC\Files\Filesystem::isDeletable($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function isSharable($path) { - return self::$defaultInstance->isSharable($path); + return \OC\Files\Filesystem::isSharable($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function file_exists($path) { - return self::$defaultInstance->file_exists($path); - } - static public function filectime($path) { - return self::$defaultInstance->filectime($path); + return \OC\Files\Filesystem::file_exists($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function filemtime($path) { - return self::$defaultInstance->filemtime($path); + return \OC\Files\Filesystem::filemtime($path); } - static public function touch($path, $mtime=null) { - return self::$defaultInstance->touch($path, $mtime); + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ + static public function touch($path, $mtime = null) { + return \OC\Files\Filesystem::touch($path, $mtime); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function file_get_contents($path) { - return self::$defaultInstance->file_get_contents($path); + return \OC\Files\Filesystem::file_get_contents($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function file_put_contents($path, $data) { - return self::$defaultInstance->file_put_contents($path, $data); + return \OC\Files\Filesystem::file_put_contents($path, $data); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function unlink($path) { - return self::$defaultInstance->unlink($path); + return \OC\Files\Filesystem::unlink($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function rename($path1, $path2) { - return self::$defaultInstance->rename($path1, $path2); + return \OC\Files\Filesystem::rename($path1, $path2); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function copy($path1, $path2) { - return self::$defaultInstance->copy($path1, $path2); + return \OC\Files\Filesystem::copy($path1, $path2); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function fopen($path, $mode) { - return self::$defaultInstance->fopen($path, $mode); + return \OC\Files\Filesystem::fopen($path, $mode); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function toTmpFile($path) { - return self::$defaultInstance->toTmpFile($path); + return \OC\Files\Filesystem::toTmpFile($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function fromTmpFile($tmpFile, $path) { - return self::$defaultInstance->fromTmpFile($tmpFile, $path); + return \OC\Files\Filesystem::fromTmpFile($tmpFile, $path); } + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function getMimeType($path) { - return self::$defaultInstance->getMimeType($path); + return \OC\Files\Filesystem::getMimeType($path); } + + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function hash($type, $path, $raw = false) { - return self::$defaultInstance->hash($type, $path, $raw); + return \OC\Files\Filesystem::hash($type, $path, $raw); } - static public function free_space($path='/') { - return self::$defaultInstance->free_space($path); + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ + static public function free_space($path = '/') { + return \OC\Files\Filesystem::free_space($path); } + /** + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + */ static public function search($query) { - return OC_FileCache::search($query); + return \OC\Files\Filesystem::search($query); } /** * check if a file or folder has been updated since $time + * + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + * @param string $path * @param int $time * @return bool */ static public function hasUpdated($path, $time) { - return self::$defaultInstance->hasUpdated($path, $time); - } - - static public function removeETagHook($params, $root = false) { - if (isset($params['path'])) { - $path=$params['path']; - } else { - $path=$params['oldpath']; - } - - if ($root) { // reduce path to the required part of it (no 'username/files') - $fakeRootView = new OC_FilesystemView($root); - $count = 1; - $path=str_replace(OC_App::getStorage("files")->getAbsolutePath(), "", $fakeRootView->getAbsolutePath($path), $count); - } - - $path = self::normalizePath($path); - OC_Connector_Sabre_Node::removeETagPropertyForPath($path); + return \OC\Files\Filesystem::hasUpdated($path, $time); } /** * normalize a path - * @param string path + * + * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem + * @param string $path * @param bool $stripTrailingSlash * @return string */ - public static function normalizePath($path, $stripTrailingSlash=true) { - if($path=='') { - return '/'; - } - //no windows style slashes - $path=str_replace('\\', '/', $path); - //add leading slash - if($path[0]!=='/') { - $path='/'.$path; - } - //remove trainling slash - if($stripTrailingSlash and strlen($path)>1 and substr($path, -1, 1)==='/') { - $path=substr($path, 0, -1); - } - //remove duplicate slashes - while(strpos($path, '//')!==false) { - $path=str_replace('//', '/', $path); - } - //normalize unicode if possible - if(class_exists('Normalizer')) { - $path=Normalizer::normalize($path); - } - return $path; + public static function normalizePath($path, $stripTrailingSlash = true) { + return \OC\Files\Filesystem::normalizePath($path, $stripTrailingSlash); } } -OC_Hook::connect('OC_Filesystem', 'post_write', 'OC_Filesystem', 'removeETagHook'); -OC_Hook::connect('OC_Filesystem', 'post_delete', 'OC_Filesystem', 'removeETagHook'); -OC_Hook::connect('OC_Filesystem', 'post_rename', 'OC_Filesystem', 'removeETagHook'); - -OC_Util::setupFS(); -require_once 'filecache.php'; diff --git a/lib/filesystemview.php b/lib/filesystemview.php index 1fc8e83d68f..d6bca62e06a 100644 --- a/lib/filesystemview.php +++ b/lib/filesystemview.php @@ -1,662 +1,9 @@ <?php /** - * ownCloud - * - * @author Frank Karlitschek - * @copyright 2012 Frank Karlitschek frank@owncloud.org - * - * 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 <http://www.gnu.org/licenses/>. - */ + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. */ - -/** - * Class to provide access to ownCloud filesystem via a "view", and methods for - * working with files within that view (e.g. read, write, delete, etc.). Each - * view is restricted to a set of directories via a virtual root. The default view - * uses the currently logged in user's data directory as root (parts of - * OC_Filesystem are merely a wrapper for OC_FilesystemView). - * - * Apps that need to access files outside of the user data folders (to modify files - * belonging to a user other than the one currently logged in, for example) should - * use this class directly rather than using OC_Filesystem, or making use of PHP's - * built-in file manipulation functions. This will ensure all hooks and proxies - * are triggered correctly. - * - * Filesystem functions are not called directly; they are passed to the correct - * OC_Filestorage object - * - * @note default root (if $root is empty or '/') is /data/[user]/ - * @note If you don't include a leading slash, you may encounter problems. - * e.g. use $v = new \OC_FilesystemView( '/' . $params['uid'] ); not - * $v = new \OC_FilesystemView( $params['uid'] ); - */ -class OC_FilesystemView { - private $fakeRoot=''; - private $internal_path_cache=array(); - private $storage_cache=array(); - - public function __construct($root) { - $this->fakeRoot=$root; - } - - public function getAbsolutePath($path = '/') { - if(!$path || $path[0]!=='/') { - $path='/'.$path; - } - return $this->fakeRoot.$path; - } - - /** - * change the root to a fake toor - * @param string fakeRoot - * @return bool - */ - public function chroot($fakeRoot) { - if(!$fakeRoot=='') { - if($fakeRoot[0]!=='/') { - $fakeRoot='/'.$fakeRoot; - } - } - $this->fakeRoot=$fakeRoot; - } - - /** - * get the fake root - * @return string - */ - public function getRoot() { - return $this->fakeRoot; - } - - /** - * get the part of the path relative to the mountpoint of the storage it's stored in - * @param string path - * @return bool - */ - public function getInternalPath($path) { - if (!isset($this->internal_path_cache[$path])) { - $this->internal_path_cache[$path] = OC_Filesystem::getInternalPath($this->getAbsolutePath($path)); - } - return $this->internal_path_cache[$path]; - } - - /** - * get path relative to the root of the view - * @param string path - * @return string - */ - public function getRelativePath($path) { - if($this->fakeRoot=='') { - return $path; - } - if(strpos($path, $this->fakeRoot)!==0) { - return null; - }else{ - $path=substr($path, strlen($this->fakeRoot)); - if(strlen($path)===0) { - return '/'; - }else{ - return $path; - } - } - } - - /** - * get the storage object for a path - * @param string path - * @return OC_Filestorage - */ - public function getStorage($path) { - if (!isset($this->storage_cache[$path])) { - $this->storage_cache[$path] = OC_Filesystem::getStorage($this->getAbsolutePath($path)); - } - return $this->storage_cache[$path]; - } - - /** - * get the mountpoint of the storage object for a path - ( note: because a storage is not always mounted inside the fakeroot, the returned mountpoint is relative to the absolute root of the filesystem and doesn't take the chroot into account - * - * @param string path - * @return string - */ - public function getMountPoint($path) { - return OC_Filesystem::getMountPoint($this->getAbsolutePath($path)); - } - - /** - * return the path to a local version of the file - * we need this because we can't know if a file is stored local or not from outside the filestorage and for some purposes a local file is needed - * @param string path - * @return string - */ - public function getLocalFile($path) { - $parent=substr($path, 0, strrpos($path, '/')); - if(OC_Filesystem::isValidPath($parent) and $storage=$this->getStorage($path)) { - return $storage->getLocalFile($this->getInternalPath($path)); - } - } - /** - * @param string path - * @return string - */ - public function getLocalFolder($path) { - $parent=substr($path, 0, strrpos($path, '/')); - if(OC_Filesystem::isValidPath($parent) and $storage=$this->getStorage($path)) { - return $storage->getLocalFolder($this->getInternalPath($path)); - } - } - - /** - * the following functions operate with arguments and return values identical - * to those of their PHP built-in equivalents. Mostly they are merely wrappers - * for OC_Filestorage via basicOperation(). - */ - public function mkdir($path) { - return $this->basicOperation('mkdir', $path, array('create', 'write')); - } - public function rmdir($path) { - return $this->basicOperation('rmdir', $path, array('delete')); - } - public function opendir($path) { - return $this->basicOperation('opendir', $path, array('read')); - } - public function readdir($handle) { - $fsLocal= new OC_Filestorage_Local( array( 'datadir' => '/' ) ); - return $fsLocal->readdir( $handle ); - } - public function is_dir($path) { - if($path=='/') { - return true; - } - return $this->basicOperation('is_dir', $path); - } - public function is_file($path) { - if($path=='/') { - return false; - } - return $this->basicOperation('is_file', $path); - } - public function stat($path) { - return $this->basicOperation('stat', $path); - } - public function filetype($path) { - return $this->basicOperation('filetype', $path); - } - public function filesize($path) { - return $this->basicOperation('filesize', $path); - } - public function readfile($path) { - OC_Util::obEnd(); - $handle=$this->fopen($path, 'rb'); - if ($handle) { - $chunkSize = 8192;// 8 MB chunks - while (!feof($handle)) { - echo fread($handle, $chunkSize); - flush(); - } - $size=$this->filesize($path); - return $size; - } - return false; - } - /** - * @deprecated Replaced by isReadable() as part of CRUDS - */ - public function is_readable($path) { - return $this->basicOperation('isReadable', $path); - } - /** - * @deprecated Replaced by isCreatable(), isUpdatable(), isDeletable() as part of CRUDS - */ - public function is_writable($path) { - return $this->basicOperation('isUpdatable', $path); - } - public function isCreatable($path) { - return $this->basicOperation('isCreatable', $path); - } - public function isReadable($path) { - return $this->basicOperation('isReadable', $path); - } - public function isUpdatable($path) { - return $this->basicOperation('isUpdatable', $path); - } - public function isDeletable($path) { - return $this->basicOperation('isDeletable', $path); - } - public function isSharable($path) { - return $this->basicOperation('isSharable', $path); - } - public function file_exists($path) { - if($path=='/') { - return true; - } - return $this->basicOperation('file_exists', $path); - } - public function filectime($path) { - return $this->basicOperation('filectime', $path); - } - public function filemtime($path) { - return $this->basicOperation('filemtime', $path); - } - public function touch($path, $mtime=null) { - if(!is_null($mtime) and !is_numeric($mtime)) { - $mtime = strtotime($mtime); - } - return $this->basicOperation('touch', $path, array('write'), $mtime); - } - public function file_get_contents($path) { - return $this->basicOperation('file_get_contents', $path, array('read')); - } - public function file_put_contents($path, $data) { - if(is_resource($data)) {//not having to deal with streams in file_put_contents makes life easier - $absolutePath = OC_Filesystem::normalizePath($this->getAbsolutePath($path)); - if (OC_FileProxy::runPreProxies('file_put_contents', $absolutePath, $data) && OC_Filesystem::isValidPath($path)) { - $path = $this->getRelativePath($absolutePath); - $exists = $this->file_exists($path); - $run = true; - if( $this->fakeRoot==OC_Filesystem::getRoot() ) { - if(!$exists) { - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_create, - array( - OC_Filesystem::signal_param_path => $path, - OC_Filesystem::signal_param_run => &$run - ) - ); - } - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_write, - array( - OC_Filesystem::signal_param_path => $path, - OC_Filesystem::signal_param_run => &$run - ) - ); - } - if(!$run) { - return false; - } - $target=$this->fopen($path, 'w'); - if($target) { - $count=OC_Helper::streamCopy($data, $target); - fclose($target); - fclose($data); - if( $this->fakeRoot==OC_Filesystem::getRoot() ) { - if(!$exists) { - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_post_create, - array( OC_Filesystem::signal_param_path => $path) - ); - } - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_post_write, - array( OC_Filesystem::signal_param_path => $path) - ); - } - OC_FileProxy::runPostProxies('file_put_contents', $absolutePath, $count); - return $count > 0; - }else{ - return false; - } - } - }else{ - return $this->basicOperation('file_put_contents', $path, array('create', 'write'), $data); - } - } - public function unlink($path) { - return $this->basicOperation('unlink', $path, array('delete')); - } - public function deleteAll( $directory, $empty = false ) { - return $this->basicOperation( 'deleteAll', $directory, array('delete'), $empty ); - } - public function rename($path1, $path2) { - $postFix1=(substr($path1, -1, 1)==='/')?'/':''; - $postFix2=(substr($path2, -1, 1)==='/')?'/':''; - $absolutePath1 = OC_Filesystem::normalizePath($this->getAbsolutePath($path1)); - $absolutePath2 = OC_Filesystem::normalizePath($this->getAbsolutePath($path2)); - if(OC_FileProxy::runPreProxies('rename', $absolutePath1, $absolutePath2) and OC_Filesystem::isValidPath($path2)) { - $path1 = $this->getRelativePath($absolutePath1); - $path2 = $this->getRelativePath($absolutePath2); - - if($path1 == null or $path2 == null) { - return false; - } - $run=true; - if( $this->fakeRoot==OC_Filesystem::getRoot() ) { - OC_Hook::emit( - OC_Filesystem::CLASSNAME, OC_Filesystem::signal_rename, - array( - OC_Filesystem::signal_param_oldpath => $path1, - OC_Filesystem::signal_param_newpath => $path2, - OC_Filesystem::signal_param_run => &$run - ) - ); - } - if($run) { - $mp1 = $this->getMountPoint($path1.$postFix1); - $mp2 = $this->getMountPoint($path2.$postFix2); - if($mp1 == $mp2) { - if($storage = $this->getStorage($path1)) { - $result = $storage->rename($this->getInternalPath($path1.$postFix1), $this->getInternalPath($path2.$postFix2)); - } - } else { - $source = $this->fopen($path1.$postFix1, 'r'); - $target = $this->fopen($path2.$postFix2, 'w'); - $count = OC_Helper::streamCopy($source, $target); - $storage1 = $this->getStorage($path1); - $storage1->unlink($this->getInternalPath($path1.$postFix1)); - $result = $count>0; - } - if( $this->fakeRoot==OC_Filesystem::getRoot() ) { - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_post_rename, - array( - OC_Filesystem::signal_param_oldpath => $path1, - OC_Filesystem::signal_param_newpath => $path2 - ) - ); - } - return $result; - } - } - } - public function copy($path1, $path2) { - $postFix1=(substr($path1, -1, 1)==='/')?'/':''; - $postFix2=(substr($path2, -1, 1)==='/')?'/':''; - $absolutePath1 = OC_Filesystem::normalizePath($this->getAbsolutePath($path1)); - $absolutePath2 = OC_Filesystem::normalizePath($this->getAbsolutePath($path2)); - if(OC_FileProxy::runPreProxies('copy', $absolutePath1, $absolutePath2) and OC_Filesystem::isValidPath($path2)) { - $path1 = $this->getRelativePath($absolutePath1); - $path2 = $this->getRelativePath($absolutePath2); - - if($path1 == null or $path2 == null) { - return false; - } - $run=true; - if( $this->fakeRoot==OC_Filesystem::getRoot() ) { - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_copy, - array( - OC_Filesystem::signal_param_oldpath => $path1, - OC_Filesystem::signal_param_newpath=>$path2, - OC_Filesystem::signal_param_run => &$run - ) - ); - $exists=$this->file_exists($path2); - if($run and !$exists) { - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_create, - array( - OC_Filesystem::signal_param_path => $path2, - OC_Filesystem::signal_param_run => &$run - ) - ); - } - if($run) { - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_write, - array( - OC_Filesystem::signal_param_path => $path2, - OC_Filesystem::signal_param_run => &$run - ) - ); - } - } - if($run) { - $mp1=$this->getMountPoint($path1.$postFix1); - $mp2=$this->getMountPoint($path2.$postFix2); - if($mp1 == $mp2) { - if($storage = $this->getStorage($path1.$postFix1)) { - $result=$storage->copy($this->getInternalPath($path1.$postFix1), $this->getInternalPath($path2.$postFix2)); - } - } else { - $source = $this->fopen($path1.$postFix1, 'r'); - $target = $this->fopen($path2.$postFix2, 'w'); - $result = OC_Helper::streamCopy($source, $target); - } - if( $this->fakeRoot==OC_Filesystem::getRoot() ) { - // If the file to be copied originates within - // the user's data directory - - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_post_copy, - array( - OC_Filesystem::signal_param_oldpath => $path1, - OC_Filesystem::signal_param_newpath=>$path2 - ) - ); - if(!$exists) { - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_post_create, - array(OC_Filesystem::signal_param_path => $path2) - ); - } - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_post_write, - array( OC_Filesystem::signal_param_path => $path2) - ); - - } else { - // If this is not a normal file copy operation - // and the file originates somewhere else - // (e.g. a version rollback operation), do not - // perform all the other post_write actions - - // Update webdav properties - OC_Filesystem::removeETagHook(array("path" => $path2), $this->fakeRoot); - - $splitPath2 = explode( '/', $path2 ); - - // Only cache information about files - // that are being copied from within - // the user files directory. Caching - // other files, like VCS backup files, - // serves no purpose - if ( $splitPath2[1] == 'files' ) { - - OC_FileCache_Update::update($path2, $this->fakeRoot); - - } - - } - - return $result; - - } - } - } - public function fopen($path, $mode) { - $hooks=array(); - switch($mode) { - case 'r': - case 'rb': - $hooks[]='read'; - break; - case 'r+': - case 'rb+': - case 'w+': - case 'wb+': - case 'x+': - case 'xb+': - case 'a+': - case 'ab+': - $hooks[]='read'; - $hooks[]='write'; - break; - case 'w': - case 'wb': - case 'x': - case 'xb': - case 'a': - case 'ab': - $hooks[]='write'; - break; - default: - OC_Log::write('core', 'invalid mode ('.$mode.') for '.$path, OC_Log::ERROR); - } - - return $this->basicOperation('fopen', $path, $hooks, $mode); - } - public function toTmpFile($path) { - if(OC_Filesystem::isValidPath($path)) { - $source = $this->fopen($path, 'r'); - if($source) { - $extension=''; - $extOffset=strpos($path, '.'); - if($extOffset !== false) { - $extension=substr($path, strrpos($path, '.')); - } - $tmpFile = OC_Helper::tmpFile($extension); - file_put_contents($tmpFile, $source); - return $tmpFile; - } - } - } - public function fromTmpFile($tmpFile, $path) { - if(OC_Filesystem::isValidPath($path)) { - if(!$tmpFile) { - debug_print_backtrace(); - } - $source=fopen($tmpFile, 'r'); - if($source) { - $this->file_put_contents($path, $source); - unlink($tmpFile); - return true; - } else { - } - } else { - return false; - } - } - - public function getMimeType($path) { - return $this->basicOperation('getMimeType', $path); - } - public function hash($type, $path, $raw = false) { - $postFix=(substr($path, -1, 1)==='/')?'/':''; - $absolutePath = OC_Filesystem::normalizePath($this->getAbsolutePath($path)); - if (OC_FileProxy::runPreProxies('hash', $absolutePath) && OC_Filesystem::isValidPath($path)) { - $path = $this->getRelativePath($absolutePath); - if ($path == null) { - return false; - } - if (OC_Filesystem::$loaded && $this->fakeRoot == OC_Filesystem::getRoot()) { - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_read, - array( OC_Filesystem::signal_param_path => $path) - ); - } - if ($storage = $this->getStorage($path.$postFix)) { - $result = $storage->hash($type, $this->getInternalPath($path.$postFix), $raw); - $result = OC_FileProxy::runPostProxies('hash', $absolutePath, $result); - return $result; - } - } - return null; - } - - public function free_space($path='/') { - return $this->basicOperation('free_space', $path); - } - - /** - * @brief abstraction layer for basic filesystem functions: wrapper for OC_Filestorage - * @param string $operation - * @param string #path - * @param array (optional) hooks - * @param mixed (optional) $extraParam - * @return mixed - * - * This method takes requests for basic filesystem functions (e.g. reading & writing - * files), processes hooks and proxies, sanitises paths, and finally passes them on to - * OC_Filestorage for delegation to a storage backend for execution - */ - private function basicOperation($operation, $path, $hooks=array(), $extraParam=null) { - $postFix=(substr($path, -1, 1)==='/')?'/':''; - $absolutePath = OC_Filesystem::normalizePath($this->getAbsolutePath($path)); - if(OC_FileProxy::runPreProxies($operation, $absolutePath, $extraParam) and OC_Filesystem::isValidPath($path)) { - $path = $this->getRelativePath($absolutePath); - if($path == null) { - return false; - } - $internalPath = $this->getInternalPath($path.$postFix); - $run=$this->runHooks($hooks, $path); - if($run and $storage = $this->getStorage($path.$postFix)) { - if(!is_null($extraParam)) { - $result = $storage->$operation($internalPath, $extraParam); - } else { - $result = $storage->$operation($internalPath); - } - $result = OC_FileProxy::runPostProxies($operation, $this->getAbsolutePath($path), $result); - if(OC_Filesystem::$loaded and $this->fakeRoot==OC_Filesystem::getRoot()) { - if($operation!='fopen') {//no post hooks for fopen, the file stream is still open - $this->runHooks($hooks, $path, true); - } - } - return $result; - } - } - return null; - } - - private function runHooks($hooks, $path, $post=false) { - $prefix=($post)?'post_':''; - $run=true; - if(OC_Filesystem::$loaded and $this->fakeRoot==OC_Filesystem::getRoot()) { - foreach($hooks as $hook) { - if($hook!='read') { - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - $prefix.$hook, - array( - OC_Filesystem::signal_param_run => &$run, - OC_Filesystem::signal_param_path => $path - ) - ); - } elseif(!$post) { - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - $prefix.$hook, - array( - OC_Filesystem::signal_param_path => $path - ) - ); - } - } - } - return $run; - } - - /** - * check if a file or folder has been updated since $time - * @param int $time - * @return bool - */ - public function hasUpdated($path, $time) { - return $this->basicOperation('hasUpdated', $path, array(), $time); - } -} +class OC_FilesystemView extends \OC\Files\View {} diff --git a/lib/group.php b/lib/group.php index ed9482418bd..5afef769361 100644 --- a/lib/group.php +++ b/lib/group.php @@ -286,4 +286,33 @@ class OC_Group { } return $users; } + + /**
+ * @brief get a list of all display names in a group
+ * @returns array with display names (value) and user ids(key)
+ */
+ public static function displayNamesInGroup($gid, $search = '', $limit = -1, $offset = 0) {
+ $displayNames=array();
+ foreach(self::$_usedBackends as $backend) {
+ $displayNames = array_merge($backend->displayNamesInGroup($gid, $search, $limit, $offset), $displayNames);
+ }
+ return $displayNames;
+ } + + /**
+ * @brief get a list of all display names in several groups
+ * @param array $gids
+ * @param string $search
+ * @param int $limit
+ * @param int $offset
+ * @return array with display names (Key) user ids (value)
+ */
+ public static function displayNamesInGroups($gids, $search = '', $limit = -1, $offset = 0) {
+ $displayNames = array();
+ foreach ($gids as $gid) {
+ // TODO Need to apply limits to groups as total
+ $displayNames = array_merge(array_diff(self::displayNamesInGroup($gid, $search, $limit, $offset), $displayNames), $displayNames);
+ }
+ return $displayNames;
+ } } diff --git a/lib/group/backend.php b/lib/group/backend.php index 9ff432d0663..4f6570c3be3 100644 --- a/lib/group/backend.php +++ b/lib/group/backend.php @@ -133,5 +133,23 @@ abstract class OC_Group_Backend implements OC_Group_Interface { public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) { return array(); } + + /**
+ * @brief get a list of all display names in a group
+ * @param string $gid
+ * @param string $search
+ * @param int $limit
+ * @param int $offset
+ * @return array with display names (value) and user ids (key)
+ */
+ public function DisplayNamesInGroup($gid, $search = '', $limit = -1, $offset = 0) {
+ $displayNames = '';
+ $users = $this->usersInGroup($gid, $search, $limit, $offset);
+ foreach ( $users as $user ) {
+ $DisplayNames[$user] = $user;
+ }
+
+ return $DisplayNames;
+ } } diff --git a/lib/group/database.php b/lib/group/database.php index 6eca98ba019..1e2328f4c08 100644 --- a/lib/group/database.php +++ b/lib/group/database.php @@ -208,4 +208,25 @@ class OC_Group_Database extends OC_Group_Backend { } return $users; } + + /**
+ * @brief get a list of all display names in a group
+ * @param string $gid
+ * @param string $search
+ * @param int $limit
+ * @param int $offset
+ * @return array with display names (value) and user ids (key)
+ */
+ public function DisplayNamesInGroup($gid, $search = '', $limit = -1, $offset = 0) {
+ $displayNames = ''; + + $stmt = OC_DB::prepare('SELECT `*PREFIX*users`.`uid`, `*PREFIX*users`.`displayname` FROM `*PREFIX*users` INNER JOIN `*PREFIX*group_user` ON `*PREFIX*group_user`.`uid` = `*PREFIX*users`.`uid` WHERE `gid` = ? AND `*PREFIX*group_user.uid` LIKE ?', $limit, $offset);
+ $result = $stmt->execute(array($gid, $search.'%'));
+ $users = array();
+ while ($row = $result->fetchRow()) { + $displayName = trim($row['displayname'], ' ');
+ $displayNames[$row['uid']] = empty($displayName) ? $row['uid'] : $displayName;
+ }
+ return $displayNames;
+ } } diff --git a/lib/helper.php b/lib/helper.php index a7b2a429952..0e549d006a1 100644 --- a/lib/helper.php +++ b/lib/helper.php @@ -78,11 +78,8 @@ class OC_Helper { } } - if (!empty($args)) { - $urlLinkTo .= '?'; - foreach($args as $k => $v) { - $urlLinkTo .= '&'.$k.'='.urlencode($v); - } + if ($args && $query = http_build_query($args, '', '&')) { + $urlLinkTo .= '?'.$query; } return $urlLinkTo; @@ -327,7 +324,7 @@ class OC_Helper { self::copyr("$src/$file", "$dest/$file"); } } - }elseif(file_exists($src) && !OC_Filesystem::isFileBlacklisted($src)) { + }elseif(file_exists($src) && !\OC\Files\Filesystem::isFileBlacklisted($src)) { copy($src, $dest); } } @@ -621,7 +618,7 @@ class OC_Helper { $newpath = $path . '/' . $filename; $counter = 2; - while (OC_Filesystem::file_exists($newpath)) { + while (\OC\Files\Filesystem::file_exists($newpath)) { $newname = $name . ' (' . $counter . ')' . $ext; $newpath = $path . '/' . $newname; $counter++; @@ -760,7 +757,7 @@ class OC_Helper { $post_max_size = OCP\Util::computerFileSize(ini_get('post_max_size')); $maxUploadFilesize = min($upload_max_filesize, $post_max_size); - $freeSpace = OC_Filesystem::free_space($dir); + $freeSpace = \OC\Files\Filesystem::free_space($dir); $freeSpace = max($freeSpace, 0); return min($maxUploadFilesize, $freeSpace); @@ -785,4 +782,23 @@ class OC_Helper { } return true; } + + /** + * Calculate the disc space + */ + public static function getStorageInfo() { + $rootInfo = \OC\Files\Filesystem::getFileInfo('/'); + $used = $rootInfo['size']; + if ($used < 0) { + $used = 0; + } + $free = \OC\Files\Filesystem::free_space(); + $total = $free + $used; + if ($total == 0) { + $total = 1; // prevent division by zero + } + $relative = round(($used / $total) * 10000) / 100; + + return array('free' => $free, 'used' => $used, 'total' => $total, 'relative' => $relative); + } } diff --git a/lib/image.php b/lib/image.php index cfc6d477395..eaa35350bcb 100644 --- a/lib/image.php +++ b/lib/image.php @@ -455,7 +455,7 @@ class OC_Image { default: // this is mostly file created from encrypted file - $this->resource = imagecreatefromstring(\OC_Filesystem::file_get_contents(\OC_Filesystem::getLocalPath($imagepath))); + $this->resource = imagecreatefromstring(\OC\Files\Filesystem::file_get_contents(\OC\Files\Filesystem::getLocalPath($imagepath))); $itype = IMAGETYPE_PNG; OC_Log::write('core', 'OC_Image->loadFromFile, Default', OC_Log::DEBUG); break; diff --git a/lib/l10n/da.php b/lib/l10n/da.php index a0ab1f17014..8f22be5e823 100644 --- a/lib/l10n/da.php +++ b/lib/l10n/da.php @@ -9,6 +9,7 @@ "Files need to be downloaded one by one." => "Filer skal downloades en for en.", "Back to Files" => "Tilbage til Filer", "Selected files too large to generate zip file." => "De markerede filer er for store til at generere en ZIP-fil.", +"couldn't be determined" => "kunne ikke fastslÃ¥s", "Application is not enabled" => "Programmet er ikke aktiveret", "Authentication error" => "Adgangsfejl", "Token expired. Please reload page." => "Adgang er udløbet. Genindlæs siden.", diff --git a/lib/l10n/fa.php b/lib/l10n/fa.php index ce7c7c6e970..8cbdcb03b3b 100644 --- a/lib/l10n/fa.php +++ b/lib/l10n/fa.php @@ -10,6 +10,7 @@ "seconds ago" => "ثانیه‌ها پیش", "1 minute ago" => "1 دقیقه پیش", "%d minutes ago" => "%d دقیقه پیش", +"1 hour ago" => "1 ساعت پیش", "today" => "امروز", "yesterday" => "دیروز", "last month" => "ماه قبل", diff --git a/lib/l10n/fr.php b/lib/l10n/fr.php index 218c22c1d53..c6bf8f7f9c3 100644 --- a/lib/l10n/fr.php +++ b/lib/l10n/fr.php @@ -9,6 +9,7 @@ "Files need to be downloaded one by one." => "Les fichiers nécessitent d'être téléchargés un par un.", "Back to Files" => "Retour aux Fichiers", "Selected files too large to generate zip file." => "Les fichiers sélectionnés sont trop volumineux pour être compressés.", +"couldn't be determined" => "impossible à déterminer", "Application is not enabled" => "L'application n'est pas activée", "Authentication error" => "Erreur d'authentification", "Token expired. Please reload page." => "La session a expiré. Veuillez recharger la page.", diff --git a/lib/l10n/hu_HU.php b/lib/l10n/hu_HU.php index c95358011f0..e25de3e1ed6 100644 --- a/lib/l10n/hu_HU.php +++ b/lib/l10n/hu_HU.php @@ -5,11 +5,11 @@ "Users" => "Felhasználók", "Apps" => "Alkalmazások", "Admin" => "Admin", -"ZIP download is turned off." => "A ZIP-letöltés nem engedélyezett.", +"ZIP download is turned off." => "A ZIP-letöltés nincs engedélyezve.", "Files need to be downloaded one by one." => "A fájlokat egyenként kell letölteni", "Back to Files" => "Vissza a Fájlokhoz", "Selected files too large to generate zip file." => "A kiválasztott fájlok túl nagyok a zip tömörÃtéshez.", -"couldn't be determined" => "nem sikerült azonosÃtani", +"couldn't be determined" => "nem határozható meg", "Application is not enabled" => "Az alkalmazás nincs engedélyezve", "Authentication error" => "HitelesÃtési hiba", "Token expired. Please reload page." => "A token lejárt. FrissÃtse az oldalt.", diff --git a/lib/l10n/ko.php b/lib/l10n/ko.php index c4716f9f8bd..859657f46b4 100644 --- a/lib/l10n/ko.php +++ b/lib/l10n/ko.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/lb.php b/lib/l10n/lb.php index a5a9adca187..06e8b2ca094 100644 --- a/lib/l10n/lb.php +++ b/lib/l10n/lb.php @@ -4,5 +4,9 @@ "Settings" => "Astellungen", "Authentication error" => "Authentifikatioun's Fehler", "Files" => "Dateien", -"Text" => "SMS" +"Text" => "SMS", +"1 hour ago" => "vrun 1 Stonn", +"last month" => "Läschte Mount", +"last year" => "Läscht Joer", +"years ago" => "Joren hier" ); diff --git a/lib/l10n/pl.php b/lib/l10n/pl.php index 6f84a328ed9..6ec35445bc2 100644 --- a/lib/l10n/pl.php +++ b/lib/l10n/pl.php @@ -9,6 +9,7 @@ "Files need to be downloaded one by one." => "Pliki muszÄ… zostać pobrane pojedynczo.", "Back to Files" => "Wróć do plików", "Selected files too large to generate zip file." => "Wybrane pliki sÄ… zbyt duże, aby wygenerować plik zip.", +"couldn't be determined" => "nie może zostać znaleziony", "Application is not enabled" => "Aplikacja nie jest włączona", "Authentication error" => "Błąd uwierzytelniania", "Token expired. Please reload page." => "Token wygasÅ‚. ProszÄ™ ponownie zaÅ‚adować stronÄ™.", diff --git a/lib/l10n/ro.php b/lib/l10n/ro.php index d3ce066c8c1..3f8e59cdac2 100644 --- a/lib/l10n/ro.php +++ b/lib/l10n/ro.php @@ -9,6 +9,7 @@ "Files need to be downloaded one by one." => "FiÈ™ierele trebuie descărcate unul câte unul.", "Back to Files" => "ÃŽnapoi la fiÈ™iere", "Selected files too large to generate zip file." => "FiÈ™ierele selectate sunt prea mari pentru a genera un fiÈ™ier zip.", +"couldn't be determined" => "nu poate fi determinat", "Application is not enabled" => "AplicaÈ›ia nu este activată", "Authentication error" => "Eroare la autentificare", "Token expired. Please reload page." => "Token expirat. Te rugăm să reîncarci pagina.", diff --git a/lib/l10n/ru_RU.php b/lib/l10n/ru_RU.php index ba7d39f9eb0..03da09236ea 100644 --- a/lib/l10n/ru_RU.php +++ b/lib/l10n/ru_RU.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/sk_SK.php b/lib/l10n/sk_SK.php index 98a5b5ca677..81f23ffdc50 100644 --- a/lib/l10n/sk_SK.php +++ b/lib/l10n/sk_SK.php @@ -9,6 +9,7 @@ "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.", +"couldn't be determined" => "nedá sa zistiÅ¥", "Application is not enabled" => "Aplikácia nie je zapnutá", "Authentication error" => "Chyba autentifikácie", "Token expired. Please reload page." => "Token vyprÅ¡al. Obnovte, prosÃm, stránku.", diff --git a/lib/l10n/sr.php b/lib/l10n/sr.php index 2ae7400ba79..34ae89a6219 100644 --- a/lib/l10n/sr.php +++ b/lib/l10n/sr.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/zh_TW.php b/lib/l10n/zh_TW.php index 4dbf89c2e0e..62ab8fedd52 100644 --- a/lib/l10n/zh_TW.php +++ b/lib/l10n/zh_TW.php @@ -9,26 +9,27 @@ "Files need to be downloaded one by one." => "檔案需è¦é€ä¸€ä¸‹è¼‰", "Back to Files" => "回到檔案列表", "Selected files too large to generate zip file." => "鏿“‡çš„æª”案太大以致於無法產生壓縮檔", +"couldn't be determined" => "無法判斷", "Application is not enabled" => "æ‡‰ç”¨ç¨‹å¼æœªå•Ÿç”¨", "Authentication error" => "èªè‰éŒ¯èª¤", -"Token expired. Please reload page." => "Token éŽæœŸ. è«‹é‡æ–°æ•´ç†é é¢", +"Token expired. Please reload page." => "Token éŽæœŸï¼Œè«‹é‡æ–°æ•´ç†é é¢ã€‚", "Files" => "檔案", "Text" => "æ–‡å—", "Images" => "圖片", "seconds ago" => "幾秒å‰", "1 minute ago" => "1 分é˜å‰", "%d minutes ago" => "%d 分é˜å‰", -"1 hour ago" => "1å°æ™‚之å‰", -"%d hours ago" => "%då°æ™‚之å‰", +"1 hour ago" => "1 å°æ™‚之å‰", +"%d hours ago" => "%d å°æ™‚之å‰", "today" => "今天", "yesterday" => "昨天", "%d days ago" => "%d 天å‰", "last month" => "上個月", -"%d months ago" => "%d個月之å‰", +"%d months ago" => "%d 個月之å‰", "last year" => "去年", "years ago" => "幾年å‰", -"%s is available. Get <a href=\"%s\">more information</a>" => "%s 已經å¯ç”¨. å–å¾— <a href=\"%s\">更多資訊</a>", +"%s is available. Get <a href=\"%s\">more information</a>" => "%s 已經å¯ç”¨ã€‚å–å¾— <a href=\"%s\">更多資訊</a>", "up to date" => "最新的", "updates check is disabled" => "檢查更新已åœç”¨", -"Could not find category \"%s\"" => "找ä¸åˆ°åˆ†é¡ž-\"%s\"" +"Could not find category \"%s\"" => "找ä¸åˆ°åˆ†é¡žï¼š\"%s\"" ); diff --git a/lib/mail.php b/lib/mail.php index 4683a1b4eee..1bb202ac977 100644 --- a/lib/mail.php +++ b/lib/mail.php @@ -38,8 +38,12 @@ class OC_Mail { $SMTPHOST = OC_Config::getValue( 'mail_smtphost', '127.0.0.1' ); $SMTPPORT = OC_Config::getValue( 'mail_smtpport', 25 ); $SMTPAUTH = OC_Config::getValue( 'mail_smtpauth', false ); + $SMTPAUTHTYPE = OC_Config::getValue( 'mail_smtpauthtype', 'LOGIN' ); $SMTPUSERNAME = OC_Config::getValue( 'mail_smtpname', '' ); $SMTPPASSWORD = OC_Config::getValue( 'mail_smtppassword', '' ); + $SMTPDEBUG = OC_Config::getValue( 'mail_smtpdebug', false ); + $SMTPTIMEOUT = OC_Config::getValue( 'mail_smtptimeout', 10 ); + $SMTPSECURE = OC_Config::getValue( 'mail_smtpsecure', '' ); $mailo = new PHPMailer(true); @@ -57,12 +61,16 @@ class OC_Mail { $mailo->Host = $SMTPHOST; $mailo->Port = $SMTPPORT; $mailo->SMTPAuth = $SMTPAUTH; + $mailo->SMTPDebug = $SMTPDEBUG; + $mailo->SMTPSecure = $SMTPSECURE; + $mailo->AuthType = $SMTPAUTHTYPE; $mailo->Username = $SMTPUSERNAME; $mailo->Password = $SMTPPASSWORD; + $mailo->Timeout = $SMTPTIMEOUT; - $mailo->From =$fromaddress; + $mailo->From = $fromaddress; $mailo->FromName = $fromname;; - $mailo->Sender =$fromaddress; + $mailo->Sender = $fromaddress; $a=explode(' ', $toaddress); try { foreach($a as $ad) { diff --git a/lib/ocs/cloud.php b/lib/ocs/cloud.php index 2d18b1db3f2..179ed8f3107 100644 --- a/lib/ocs/cloud.php +++ b/lib/ocs/cloud.php @@ -45,11 +45,11 @@ class OC_OCS_Cloud { if(OC_User::userExists($parameters['user'])) { // calculate the disc space $userDir = '/'.$parameters['user'].'/files'; - OC_Filesystem::init($userDir); - $rootInfo = OC_FileCache::get(''); - $sharedInfo = OC_FileCache::get('/Shared'); + \OC\Files\Filesystem::init($useDir); + $rootInfo = \OC\Files\Filesystem::getFileInfo(''); + $sharedInfo = \OC\Files\Filesystem::getFileInfo('/Shared'); $used = $rootInfo['size'] - $sharedInfo['size']; - $free = OC_Filesystem::free_space(); + $free = \OC\Files\Filesystem::free_space(); $total = $free + $used; if($total===0) $total = 1; // prevent division by zero $relative = round(($used/$total)*10000)/100; diff --git a/lib/public/files.php b/lib/public/files.php index 75e1d2fbbc1..f6b3e0ee38a 100644 --- a/lib/public/files.php +++ b/lib/public/files.php @@ -99,7 +99,7 @@ class Files { /** * @param string appid * @param $app app - * @return OC_FilesystemView + * @return \OC\Files\View */ public static function getStorage( $app ) { return \OC_App::getStorage( $app ); diff --git a/lib/public/share.php b/lib/public/share.php index 5fd1e2e29f3..9894f1550a8 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -37,8 +37,7 @@ class Share { const SHARE_TYPE_REMOTE = 6; /** CRUDS permissions (Create, Read, Update, Delete, Share) using a bitmask - * Construct permissions for share() and setPermissions with Or (|) - * e.g. Give user read and update permissions: PERMISSION_READ | PERMISSION_UPDATE + * Construct permissions for share() and setPermissions with Or (|) e.g. Give user read and update permissions: PERMISSION_READ | PERMISSION_UPDATE * Check if permission is granted with And (&) e.g. Check if delete is granted: if ($permissions & PERMISSION_DELETE) * Remove permissions with And (&) and Not (~) e.g. Remove the update permission: $permissions &= ~PERMISSION_UPDATE * Apps are required to handle permissions on their own, this class only stores and manages the permissions of shares @@ -67,17 +66,14 @@ class Share { public static function registerBackend($itemType, $class, $collectionOf = null, $supportedFileExtensions = null) { if (self::isEnabled()) { if (!isset(self::$backendTypes[$itemType])) { - self::$backendTypes[$itemType] = array('class' => $class, - 'collectionOf' => $collectionOf, - 'supportedFileExtensions' => $supportedFileExtensions); + self::$backendTypes[$itemType] = array('class' => $class, 'collectionOf' => $collectionOf, 'supportedFileExtensions' => $supportedFileExtensions); if(count(self::$backendTypes) === 1) { \OC_Util::addScript('core', 'share'); \OC_Util::addStyle('core', 'share'); } return true; } - \OC_Log::write('OCP\Share', 'Sharing backend '.$class.' not registered, ' - .self::$backendTypes[$itemType]['class'].' is already registered for '.$itemType, \OC_Log::WARN); + \OC_Log::write('OCP\Share', 'Sharing backend '.$class.' not registered, '.self::$backendTypes[$itemType]['class'].' is already registered for '.$itemType, \OC_Log::WARN); } return false; } @@ -103,20 +99,8 @@ class Share { * @param int Number of items to return (optional) Returns all by default * @return Return depends on format */ - public static function getItemsSharedWith($itemType, - $format = self::FORMAT_NONE, - $parameters = null, - $limit = -1, - $includeCollections = false) { - return self::getItems($itemType, - null, - self::$shareTypeUserAndGroups, - \OC_User::getUser(), - null, - $format, - $parameters, - $limit, - $includeCollections); + public static function getItemsSharedWith($itemType, $format = self::FORMAT_NONE, $parameters = null, $limit = -1, $includeCollections = false) { + return self::getItems($itemType, null, self::$shareTypeUserAndGroups, \OC_User::getUser(), null, $format, $parameters, $limit, $includeCollections); } /** @@ -126,20 +110,8 @@ class Share { * @param int Format (optional) Format type must be defined by the backend * @return Return depends on format */ - public static function getItemSharedWith($itemType, - $itemTarget, - $format = self::FORMAT_NONE, - $parameters = null, - $includeCollections = false) { - return self::getItems($itemType, - $itemTarget, - self::$shareTypeUserAndGroups, - \OC_User::getUser(), - null, - $format, - $parameters, - 1, - $includeCollections); + public static function getItemSharedWith($itemType, $itemTarget, $format = self::FORMAT_NONE, $parameters = null, $includeCollections = false) { + return self::getItems($itemType, $itemTarget, self::$shareTypeUserAndGroups, \OC_User::getUser(), null, $format, $parameters, 1, $includeCollections); } /** @@ -149,20 +121,8 @@ class Share { * @param int Format (optional) Format type must be defined by the backend * @return Return depends on format */ - public static function getItemSharedWithBySource($itemType, - $itemSource, - $format = self::FORMAT_NONE, - $parameters = null, - $includeCollections = false) { - return self::getItems($itemType, - $itemSource, - self::$shareTypeUserAndGroups, - \OC_User::getUser(), - null, - $format, - $parameters, - 1, - $includeCollections, true); + public static function getItemSharedWithBySource($itemType, $itemSource, $format = self::FORMAT_NONE, $parameters = null, $includeCollections = false) { + return self::getItems($itemType, $itemSource, self::$shareTypeUserAndGroups, \OC_User::getUser(), null, $format, $parameters, 1, $includeCollections, true); } /** @@ -173,14 +133,7 @@ class Share { * @return Item */ public static function getItemSharedWithByLink($itemType, $itemSource, $uidOwner) { - return self::getItems($itemType, - $itemSource, - self::SHARE_TYPE_LINK, - null, - $uidOwner, - self::FORMAT_NONE, - null, - 1); + return self::getItems($itemType, $itemSource, self::SHARE_TYPE_LINK, null, $uidOwner, self::FORMAT_NONE, null, 1); } /** @@ -189,7 +142,7 @@ class Share { * @return Item */ public static function getShareByToken($token) { - $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*share` WHERE `token` = ?', 1); + $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*share` WHERE `token` = ?',1); $result = $query->execute(array($token)); if (\OC_DB::isError($result)) { \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result) . ', token=' . $token, \OC_Log::ERROR); @@ -204,20 +157,8 @@ class Share { * @param int Number of items to return (optional) Returns all by default * @return Return depends on format */ - public static function getItemsShared($itemType, - $format = self::FORMAT_NONE, - $parameters = null, - $limit = -1, - $includeCollections = false) { - return self::getItems($itemType, - null, - null, - null, - \OC_User::getUser(), - $format, - $parameters, - $limit, - $includeCollections); + public static function getItemsShared($itemType, $format = self::FORMAT_NONE, $parameters = null, $limit = -1, $includeCollections = false) { + return self::getItems($itemType, null, null, null, \OC_User::getUser(), $format, $parameters, $limit, $includeCollections); } /** @@ -227,20 +168,8 @@ class Share { * @param int Format (optional) Format type must be defined by the backend * @return Return depends on format */ - public static function getItemShared($itemType, - $itemSource, - $format = self::FORMAT_NONE, - $parameters = null, - $includeCollections = false) { - return self::getItems($itemType, - $itemSource, - null, - null, - \OC_User::getUser(), - $format, - $parameters, - -1, - $includeCollections); + public static function getItemShared($itemType, $itemSource, $format = self::FORMAT_NONE, $parameters = null, $includeCollections = false) { + return self::getItems($itemType, $itemSource, null, null, \OC_User::getUser(), $format, $parameters, -1, $includeCollections); } /** @@ -270,26 +199,14 @@ class Share { if ($sharingPolicy == 'groups_only') { $inGroup = array_intersect(\OC_Group::getUserGroups($uidOwner), \OC_Group::getUserGroups($shareWith)); if (empty($inGroup)) { - $message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is not a member' - .' of any groups that '.$uidOwner.' is a member of'; + $message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is not a member of any groups that '.$uidOwner.' is a member of'; \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); throw new \Exception($message); } } // Check if the item source is already shared with the user, either from the same owner or a different user - $checkExists = self::getItems($itemType, - $itemSource, - self::$shareTypeUserAndGroups, - $shareWith, - null, - self::FORMAT_NONE, - null, - 1, - true, - true); - if ($checkExists) { - // Only allow the same share to occur again if it is the same owner and is not a user share, - // this use case is for increasing permissions for a specific user + if ($checkExists = self::getItems($itemType, $itemSource, self::$shareTypeUserAndGroups, $shareWith, null, self::FORMAT_NONE, null, 1, true, true)) { + // Only allow the same share to occur again if it is the same owner and is not a user share, this use case is for increasing permissions for a specific user if ($checkExists['uid_owner'] != $uidOwner || $checkExists['share_type'] == $shareType) { $message = 'Sharing '.$itemSource.' failed, because this item is already shared with '.$shareWith; \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); @@ -303,26 +220,14 @@ class Share { throw new \Exception($message); } if ($sharingPolicy == 'groups_only' && !\OC_Group::inGroup($uidOwner, $shareWith)) { - $message = 'Sharing '.$itemSource.' failed, because '.$uidOwner - .' is not a member of the group '.$shareWith; + $message = 'Sharing '.$itemSource.' failed, because '.$uidOwner.' is not a member of the group '.$shareWith; \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); throw new \Exception($message); } // Check if the item source is already shared with the group, either from the same owner or a different user // The check for each user in the group is done inside the put() function - $checkExists = self::getItems($itemType, - $itemSource, - self::SHARE_TYPE_GROUP, - $shareWith, - null, - self::FORMAT_NONE, - null, - 1, - true, - true); - if ($checkExists) { - // Only allow the same share to occur again if it is the same owner and is not a group share, - // this use case is for increasing permissions for a specific user + if ($checkExists = self::getItems($itemType, $itemSource, self::SHARE_TYPE_GROUP, $shareWith, null, self::FORMAT_NONE, null, 1, true, true)) { + // Only allow the same share to occur again if it is the same owner and is not a group share, this use case is for increasing permissions for a specific user if ($checkExists['uid_owner'] != $uidOwner || $checkExists['share_type'] == $shareType) { $message = 'Sharing '.$itemSource.' failed, because this item is already shared with '.$shareWith; \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); @@ -337,15 +242,7 @@ class Share { } else if ($shareType === self::SHARE_TYPE_LINK) { if (\OC_Appconfig::getValue('core', 'shareapi_allow_links', 'yes') == 'yes') { // when updating a link share - $checkExists = self::getItems($itemType, - $itemSource, - self::SHARE_TYPE_LINK, - null, - $uidOwner, - self::FORMAT_NONE, - null, - 1); - if ($checkExists) { + if ($checkExists = self::getItems($itemType, $itemSource, self::SHARE_TYPE_LINK, null, $uidOwner, self::FORMAT_NONE, null, 1)) { // remember old token $oldToken = $checkExists['token']; //delete the old share @@ -365,14 +262,7 @@ class Share { } else { $token = \OC_Util::generate_random_bytes(self::TOKEN_LENGTH); } - $result = self::put($itemType, - $itemSource, - $shareType, - $shareWith, - $uidOwner, - $permissions, - null, - $token); + $result = self::put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions, null, $token); if ($result) { return $token; } else { @@ -410,41 +300,36 @@ class Share { throw new \Exception($message); } // If the item is a folder, scan through the folder looking for equivalent item types - if ($itemType == 'folder') { - $parentFolder = self::put('folder', $itemSource, $shareType, $shareWith, $uidOwner, $permissions, true); - if ($parentFolder && $files = \OC_Files::getDirectoryContent($itemSource)) { - for ($i = 0; $i < count($files); $i++) { - $name = substr($files[$i]['name'], strpos($files[$i]['name'], $itemSource) - strlen($itemSource)); - if ($files[$i]['mimetype'] == 'httpd/unix-directory' - && $children = \OC_Files::getDirectoryContent($name, '/') - ) { - // Continue scanning into child folders - array_push($files, $children); - } else { - // Check file extension for an equivalent item type to convert to - $extension = strtolower(substr($itemSource, strrpos($itemSource, '.') + 1)); - foreach (self::$backends as $type => $backend) { - if (isset($backend->dependsOn) - && $backend->dependsOn == 'file' - && isset($backend->supportedFileExtensions) - && in_array($extension, $backend->supportedFileExtensions) - ) { - $itemType = $type; - break; - } - } - // Pass on to put() to check if this item should be converted, - // the item won't be inserted into the database unless it can be converted - self::put($itemType, $name, $shareType, $shareWith, $uidOwner, $permissions, $parentFolder); - } - } - return true; - } - return false; - } else { +// if ($itemType == 'folder') { +// $parentFolder = self::put('folder', $itemSource, $shareType, $shareWith, $uidOwner, $permissions, true); +// if ($parentFolder && $files = \OC\Files\Filesystem::getDirectoryContent($itemSource)) { +// for ($i = 0; $i < count($files); $i++) { +// $name = substr($files[$i]['name'], strpos($files[$i]['name'], $itemSource) - strlen($itemSource)); +// if ($files[$i]['mimetype'] == 'httpd/unix-directory' +// && $children = \OC\Files\Filesystem::getDirectoryContent($name, '/') +// ) { +// // Continue scanning into child folders +// array_push($files, $children); +// } else { +// // Check file extension for an equivalent item type to convert to +// $extension = strtolower(substr($itemSource, strrpos($itemSource, '.') + 1)); +// foreach (self::$backends as $type => $backend) { +// if (isset($backend->dependsOn) && $backend->dependsOn == 'file' && isset($backend->supportedFileExtensions) && in_array($extension, $backend->supportedFileExtensions)) { +// $itemType = $type; +// break; +// } +// } +// // Pass on to put() to check if this item should be converted, the item won't be inserted into the database unless it can be converted +// self::put($itemType, $name, $shareType, $shareWith, $uidOwner, $permissions, $parentFolder); +// } +// } +// return true; +// } +// return false; +// } else { // Put the item into the database return self::put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions); - } +// } } /** @@ -456,22 +341,14 @@ class Share { * @return Returns true on success or false on failure */ public static function unshare($itemType, $itemSource, $shareType, $shareWith) { - $item = self::getItems($itemType, - $itemSource, - $shareType, - $shareWith, - \OC_User::getUser(), - self::FORMAT_NONE, - null, - 1); - if ($item) { + if ($item = self::getItems($itemType, $itemSource, $shareType, $shareWith, \OC_User::getUser(), self::FORMAT_NONE, null, 1)) { // Pass all the vars we have for now, they may be useful \OC_Hook::emit('OCP\Share', 'pre_unshare', array( 'itemType' => $itemType, 'itemSource' => $itemSource, 'shareType' => $shareType, 'shareWith' => $shareWith, - )); + )); self::delete($item['id']); return true; } @@ -485,14 +362,13 @@ class Share { * @return Returns true on success or false on failure */ public static function unshareAll($itemType, $itemSource) { - $shares = self::getItemShared($itemType, $itemSource); - if ($shares) { + if ($shares = self::getItemShared($itemType, $itemSource)) { // Pass all the vars we have for now, they may be useful \OC_Hook::emit('OCP\Share', 'pre_unshareAll', array( 'itemType' => $itemType, 'itemSource' => $itemSource, 'shares' => $shares - )); + )); foreach ($shares as $share) { self::delete($share['id']); } @@ -511,27 +387,11 @@ class Share { * */ public static function unshareFromSelf($itemType, $itemTarget) { - $item = self::getItemSharedWith($itemType, $itemTarget); - if ($item) { + if ($item = self::getItemSharedWith($itemType, $itemTarget)) { if ((int)$item['share_type'] === self::SHARE_TYPE_GROUP) { - // Insert an extra row for the group share and set permission to 0 - // to prevent it from showing up for the user - $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (' - .'`item_type`, `item_source`, `item_target`, `parent`, `share_type`, `share_with`, ' - .'`uid_owner`, `permissions`, `stime`, `file_source`, `file_target`' - .') VALUES (?,?,?,?,?,?,?,?,?,?,?)'); - $query->execute(array( - $item['item_type'], - $item['item_source'], - $item['item_target'], - $item['id'], - self::$shareTypeGroupUserUnique, - \OC_User::getUser(), - $item['uid_owner'], - 0, - $item['stime'], - $item['file_source'], - $item['file_target'])); + // Insert an extra row for the group share and set permission to 0 to prevent it from showing up for the user + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`, `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`, `file_target`) VALUES (?,?,?,?,?,?,?,?,?,?,?)'); + $query->execute(array($item['item_type'], $item['item_source'], $item['item_target'], $item['id'], self::$shareTypeGroupUserUnique, \OC_User::getUser(), $item['uid_owner'], 0, $item['stime'], $item['file_source'], $item['file_target'])); \OC_DB::insertid('*PREFIX*share'); // Delete all reshares by this user of the group share self::delete($item['id'], true, \OC_User::getUser()); @@ -558,24 +418,13 @@ class Share { * @return Returns true on success or false on failure */ public static function setPermissions($itemType, $itemSource, $shareType, $shareWith, $permissions) { - $item = self::getItems($itemType, - $itemSource, - $shareType, - $shareWith, - \OC_User::getUser(), - self::FORMAT_NONE, - null, - 1, - false); - if ($item) { - // Check if this item is a reshare and - // verify that the permissions granted don't exceed the parent shared item + if ($item = self::getItems($itemType, $itemSource, $shareType, $shareWith, \OC_User::getUser(), self::FORMAT_NONE, null, 1, false)) { + // Check if this item is a reshare and verify that the permissions granted don't exceed the parent shared item if (isset($item['parent'])) { $query = \OC_DB::prepare('SELECT `permissions` FROM `*PREFIX*share` WHERE `id` = ?', 1); $result = $query->execute(array($item['parent']))->fetchRow(); if (~(int)$result['permissions'] & $permissions) { - $message = 'Setting permissions for '.$itemSource.' failed, ' - .'because the permissions exceed permissions granted to '.\OC_User::getUser(); + $message = 'Setting permissions for '.$itemSource.' failed, because the permissions exceed permissions granted to '.\OC_User::getUser(); \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); throw new \Exception($message); } @@ -592,12 +441,9 @@ class Share { $parents = array($item['id']); while (!empty($parents)) { $parents = "'".implode("','", $parents)."'"; - $query = \OC_DB::prepare('SELECT `id`, `permissions`' - .' FROM `*PREFIX*share`' - .' WHERE `parent` IN ('.$parents.')'); + $query = \OC_DB::prepare('SELECT `id`, `permissions` FROM `*PREFIX*share` WHERE `parent` IN ('.$parents.')'); $result = $query->execute(); - // Reset parents array, - // only go through loop again if items are found that need permissions removed + // Reset parents array, only go through loop again if items are found that need permissions removed $parents = array(); while ($item = $result->fetchRow()) { // Check if permissions need to be removed @@ -611,9 +457,7 @@ class Share { // Remove the permissions for all reshares of this item if (!empty($ids)) { $ids = "'".implode("','", $ids)."'"; - $query = \OC_DB::prepare('UPDATE `*PREFIX*share`' - .' SET `permissions` = `permissions` & ?' - .' WHERE `id` IN ('.$ids.')'); + $query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `permissions` = `permissions` & ? WHERE `id` IN ('.$ids.')'); $query->execute(array($permissions)); } } @@ -626,16 +470,7 @@ class Share { } public static function setExpirationDate($itemType, $itemSource, $date) { - $items = self::getItems($itemType, - $itemSource, - null, - null, - \OC_User::getUser(), - self::FORMAT_NONE, - null, - -1, - false); - if ($items) { + if ($items = self::getItems($itemType, $itemSource, null, null, \OC_User::getUser(), self::FORMAT_NONE, null, -1, false)) { if (!empty($items)) { if ($date == '') { $date = null; @@ -697,8 +532,7 @@ class Share { if (!self::getBackend($itemType) instanceof Share_Backend_Collection) { unset($collectionTypes[0]); } - // Return array if collections were found or the item type is a collection itself - // - collections can be inside collections + // Return array if collections were found or the item type is a collection itself - collections can be inside collections if (count($collectionTypes) > 0) { return $collectionTypes; } @@ -709,8 +543,7 @@ class Share { * @brief Get shared items from the database * @param string Item type * @param string Item source or target (optional) - * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, SHARE_TYPE_LINK, - * $shareTypeUserAndGroups, or $shareTypeGroupUserUnique + * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, SHARE_TYPE_LINK, $shareTypeUserAndGroups, or $shareTypeGroupUserUnique * @param string User or group the item is being shared with * @param string User that is the owner of shared items (optional) * @param int Format to convert items to with formatItems() @@ -722,16 +555,7 @@ class Share { * See public functions getItem(s)... for parameter usage * */ - private static function getItems($itemType, - $item = null, - $shareType = null, - $shareWith = null, - $uidOwner = null, - $format = self::FORMAT_NONE, - $parameters = null, - $limit = -1, - $includeCollections = false, - $itemShareWithBySource = false) { + private static function getItems($itemType, $item = null, $shareType = null, $shareWith = null, $uidOwner = null, $format = self::FORMAT_NONE, $parameters = null, $limit = -1, $includeCollections = false, $itemShareWithBySource = false) { if (!self::isEnabled()) { if ($limit == 1 || (isset($uidOwner) && isset($item))) { return false; @@ -740,11 +564,10 @@ class Share { } } $backend = self::getBackend($itemType); - // Get filesystem root to add it to the file target and remove from the file source, - // match file_source with the file cache + // Get filesystem root to add it to the file target and remove from the file source, match file_source with the file cache if ($itemType == 'file' || $itemType == 'folder') { - $root = \OC_Filesystem::getRoot(); - $where = 'INNER JOIN `*PREFIX*fscache` ON `file_source` = `*PREFIX*fscache`.`id`'; + $root = \OC\Files\Filesystem::getRoot(); + $where = 'INNER JOIN `*PREFIX*filecache` ON `file_source` = `*PREFIX*filecache`.`fileid`'; if (!isset($item)) { $where .= ' WHERE `file_target` IS NOT NULL'; } @@ -830,7 +653,7 @@ class Share { } else { if ($itemType == 'file' || $itemType == 'folder') { $where .= ' `file_target` = ?'; - $item = \OC_Filesystem::normalizePath($item); + $item = \OC\Files\Filesystem::normalizePath($item); } else { $where .= ' `item_target` = ?'; } @@ -844,8 +667,7 @@ class Share { } if ($limit != -1 && !$includeCollections) { if ($shareType == self::$shareTypeUserAndGroups) { - // Make sure the unique user target is returned if it exists, - // unique targets should follow the group share in the database + // Make sure the unique user target is returned if it exists, unique targets should follow the group share in the database // If the limit is not 1, the filtering can be done later $where .= ' ORDER BY `*PREFIX*share`.`id` DESC'; } @@ -861,34 +683,29 @@ class Share { // TODO Optimize selects if ($format == self::FORMAT_STATUSES) { if ($itemType == 'file' || $itemType == 'folder') { - $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, ' - .'`share_type`, `file_source`, `path`, `expiration`'; + $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `share_type`, `file_source`, `path`, `expiration`'; } else { $select = '`id`, `item_type`, `item_source`, `parent`, `share_type`, `expiration`'; } } else { if (isset($uidOwner)) { if ($itemType == 'file' || $itemType == 'folder') { - $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `share_type`, ' - .'`share_with`, `file_source`, `path`, `permissions`, `stime`, `expiration`, `token`'; + $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `share_type`, `share_with`, `file_source`, `path`, `permissions`, `stime`, `expiration`, `token`'; } else { - $select = '`id`, `item_type`, `item_source`, `parent`, `share_type`, `share_with`, ' - .'`permissions`, `stime`, `file_source`, `expiration`, `token`'; + $select = '`id`, `item_type`, `item_source`, `parent`, `share_type`, `share_with`, `permissions`, `stime`, `file_source`, `expiration`, `token`'; } } else { if ($fileDependent) { if (($itemType == 'file' || $itemType == 'folder') - && $format == \OC_Share_Backend_File::FORMAT_FILE_APP + && $format == \OC_Share_Backend_File::FORMAT_GET_FOLDER_CONTENTS || $format == \OC_Share_Backend_File::FORMAT_FILE_APP_ROOT ) { $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `uid_owner`, ' - .'`share_type`, `share_with`, `file_source`, `path`, `file_target`, `permissions`, ' - .'`expiration`, `name`, `ctime`, `mtime`, `mimetype`, `size`, `encrypted`, ' - .'`versioned`, `writable`'; + .'`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`'; } 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`'; + $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`'; } } else { $select = '*'; @@ -899,9 +716,7 @@ class Share { $query = \OC_DB::prepare('SELECT '.$select.' FROM `*PREFIX*share` '.$where, $queryLimit); $result = $query->execute($queryArgs); if (\OC_DB::isError($result)) { - \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result) - . ', select=' . $select - . ' where=' . $where, \OC_Log::ERROR); + \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result) . ', select=' . $select . ' where=' . $where, \OC_Log::ERROR); } $items = array(); $targets = array(); @@ -918,8 +733,7 @@ class Share { } else if (!isset($uidOwner)) { // Check if the same target already exists if (isset($targets[$row[$column]])) { - // Check if the same owner shared with the user twice through a group and user share - // - this is allowed + // Check if the same owner shared with the user twice through a group and user share - this is allowed $id = $targets[$row[$column]]; if ($items[$id]['uid_owner'] == $row['uid_owner']) { // Switch to group share type to ensure resharing conditions aren't bypassed @@ -927,11 +741,8 @@ class Share { $items[$id]['share_type'] = self::SHARE_TYPE_GROUP; $items[$id]['share_with'] = $row['share_with']; } - // Switch ids if sharing permission is granted on only one share - // to ensure correct parent is used if resharing - if (~(int)$items[$id]['permissions'] & PERMISSION_SHARE - && (int)$row['permissions'] & PERMISSION_SHARE - ) { + // Switch ids if sharing permission is granted on only one share to ensure correct parent is used if resharing + if (~(int)$items[$id]['permissions'] & PERMISSION_SHARE && (int)$row['permissions'] & PERMISSION_SHARE) { $items[$row['id']] = $items[$id]; unset($items[$id]); $id = $row['id']; @@ -949,7 +760,8 @@ class Share { if (isset($row['parent'])) { $row['path'] = '/Shared/'.basename($row['path']); } else { - $row['path'] = substr($row['path'], $root); + // Strip 'files' from path + $row['path'] = substr($row['path'], 5); } } if (isset($row['expiration'])) { @@ -959,13 +771,22 @@ class Share { continue; } } + + // Add display names to result + if ( isset($row['share_with']) && $row['share_with'] != '') { + $row['share_with_displayname'] = \OCP\User::getDisplayName($row['share_with']); + } + if ( isset($row['uid_owner']) && $row['uid_owner'] != '') { + $row['displayname_owner'] = \OCP\User::getDisplayName($row['uid_owner']); + } + $items[$row['id']] = $row; } if (!empty($items)) { $collectionItems = array(); foreach ($items as &$row) { // Return only the item instead of a 2-dimensional array - if ($limit == 1 && $row['item_type'] == $itemType && $row[$column] == $item) { + if ($limit == 1 && $row[$column] == $item && ($row['item_type'] == $itemType || $itemType == 'file')) { if ($format == self::FORMAT_NONE) { return $row; } else { @@ -974,9 +795,7 @@ class Share { } // Check if this is a collection of the requested item type if ($includeCollections && $collectionTypes && in_array($row['item_type'], $collectionTypes)) { - if (($collectionBackend = self::getBackend($row['item_type'])) - && $collectionBackend instanceof Share_Backend_Collection - ) { + if (($collectionBackend = self::getBackend($row['item_type'])) && $collectionBackend instanceof Share_Backend_Collection) { // Collections can be inside collections, check if the item is a collection if (isset($item) && $row['item_type'] == $itemType && $row[$column] == $item) { $collectionItems[] = $row; @@ -1000,9 +819,10 @@ class Share { if ($row['item_type'] == 'file' || $row['item_type'] == 'folder') { $childItem['file_source'] = $child['source']; } else { - $childItem['file_source'] = \OC_FileCache::getId($child['file_path']); + $meta = \OC\Files\Filesystem::getFileInfo($child['file_path']); + $childItem['file_source'] = $meta['fileid']; } - $childItem['file_target'] = \OC_Filesystem::normalizePath($child['file_path']); + $childItem['file_target'] = \OC\Files\Filesystem::normalizePath($child['file_path']); } if (isset($item)) { if ($childItem[$column] == $item) { @@ -1033,6 +853,9 @@ class Share { if (!empty($collectionItems)) { $items = array_merge($items, $collectionItems); } + if (empty($items) && $limit == 1) { + return false; + } if ($format == self::FORMAT_NONE) { return $items; } else if ($format == self::FORMAT_STATUSES) { @@ -1068,18 +891,10 @@ class Share { * @param bool|array Parent folder target (optional) * @return bool Returns true on success or false on failure */ - private static function put($itemType, - $itemSource, - $shareType, - $shareWith, - $uidOwner, - $permissions, - $parentFolder = null, - $token = null) { + private static function put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions, $parentFolder = null, $token = null) { $backend = self::getBackend($itemType); // Check if this is a reshare - $checkReshare = self::getItemSharedWithBySource($itemType, $itemSource, self::FORMAT_NONE, null, true); - if ($checkReshare) { + if ($checkReshare = self::getItemSharedWithBySource($itemType, $itemSource, self::FORMAT_NONE, null, true)) { // Check if attempting to share back to owner if ($checkReshare['uid_owner'] == $shareWith && $shareType == self::SHARE_TYPE_USER) { $message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is the original sharer'; @@ -1089,8 +904,7 @@ class Share { // Check if share permissions is granted if ((int)$checkReshare['permissions'] & PERMISSION_SHARE) { if (~(int)$checkReshare['permissions'] & $permissions) { - $message = 'Sharing '.$itemSource.' failed, ' - .'because the permissions exceed permissions granted to '.$uidOwner; + $message = 'Sharing '.$itemSource.' failed, because the permissions exceed permissions granted to '.$uidOwner; \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); throw new \Exception($message); } else { @@ -1112,8 +926,7 @@ class Share { $suggestedItemTarget = null; $suggestedFileTarget = null; if (!$backend->isValidSource($itemSource, $uidOwner)) { - $message = 'Sharing '.$itemSource.' failed, ' - .'because the sharing backend for '.$itemType.' could not find its source'; + $message = 'Sharing '.$itemSource.' failed, because the sharing backend for '.$itemType.' could not find its source'; \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); throw new \Exception($message); } @@ -1123,7 +936,8 @@ class Share { if ($itemType == 'file' || $itemType == 'folder') { $fileSource = $itemSource; } else { - $fileSource = \OC_FileCache::getId($filePath); + $meta = \OC\Files\Filesystem::getFileInfo($filePath); + $fileSource = $meta['fileid']; } if ($fileSource == -1) { $message = 'Sharing '.$itemSource.' failed, because the file could not be found in the file cache'; @@ -1135,27 +949,14 @@ class Share { $fileSource = null; } } - $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`,' - .' `share_type`, `share_with`, `uid_owner`, `permissions`,' - .' `stime`, `file_source`, `file_target`, `token`' - .') VALUES (?,?,?,?,?,?,?,?,?,?,?,?)'); + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`, `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`, `file_target`, `token`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)'); // Share with a group if ($shareType == self::SHARE_TYPE_GROUP) { - $groupItemTarget = self::generateTarget($itemType, - $itemSource, - $shareType, - $shareWith['group'], - $uidOwner, - $suggestedItemTarget); + $groupItemTarget = self::generateTarget($itemType, $itemSource, $shareType, $shareWith['group'], $uidOwner, $suggestedItemTarget); if (isset($fileSource)) { if ($parentFolder) { if ($parentFolder === true) { - $groupFileTarget = self::generateTarget('file', - $filePath, - $shareType, - $shareWith['group'], - $uidOwner, - $suggestedFileTarget); + $groupFileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith['group'], $uidOwner, $suggestedFileTarget); // Set group default file target for future use $parentFolders[0]['folder'] = $groupFileTarget; } else { @@ -1164,50 +965,21 @@ class Share { $parent = $parentFolder[0]['id']; } } else { - $groupFileTarget = self::generateTarget('file', - $filePath, - $shareType, - $shareWith['group'], - $uidOwner, - $suggestedFileTarget); + $groupFileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith['group'], $uidOwner, $suggestedFileTarget); } } else { $groupFileTarget = null; } - $query->execute(array( - $itemType, - $itemSource, - $groupItemTarget, - $parent, - $shareType, - $shareWith['group'], - $uidOwner, - $permissions, - time(), - $fileSource, - $groupFileTarget, - $token)); + $query->execute(array($itemType, $itemSource, $groupItemTarget, $parent, $shareType, $shareWith['group'], $uidOwner, $permissions, time(), $fileSource, $groupFileTarget, $token)); // Save this id, any extra rows for this group share will need to reference it $parent = \OC_DB::insertid('*PREFIX*share'); // Loop through all users of this group in case we need to add an extra row foreach ($shareWith['users'] as $uid) { - $itemTarget = self::generateTarget($itemType, - $itemSource, - self::SHARE_TYPE_USER, - $uid, - $uidOwner, - $suggestedItemTarget, - $parent); + $itemTarget = self::generateTarget($itemType, $itemSource, self::SHARE_TYPE_USER, $uid, $uidOwner, $suggestedItemTarget, $parent); if (isset($fileSource)) { if ($parentFolder) { if ($parentFolder === true) { - $fileTarget = self::generateTarget('file', - $filePath, - self::SHARE_TYPE_USER, - $uid, - $uidOwner, - $suggestedFileTarget, - $parent); + $fileTarget = self::generateTarget('file', $filePath, self::SHARE_TYPE_USER, $uid, $uidOwner, $suggestedFileTarget, $parent); if ($fileTarget != $groupFileTarget) { $parentFolders[$uid]['folder'] = $fileTarget; } @@ -1216,13 +988,7 @@ class Share { $parent = $parentFolder[$uid]['id']; } } else { - $fileTarget = self::generateTarget('file', - $filePath, - self::SHARE_TYPE_USER, - $uid, - $uidOwner, - $suggestedFileTarget, - $parent); + $fileTarget = self::generateTarget('file', $filePath, self::SHARE_TYPE_USER, $uid, $uidOwner, $suggestedFileTarget, $parent); } } else { $fileTarget = null; @@ -1243,19 +1009,7 @@ class Share { )); // Insert an extra row for the group share if the item or file target is unique for this user if ($itemTarget != $groupItemTarget || (isset($fileSource) && $fileTarget != $groupFileTarget)) { - $query->execute(array( - $itemType, - $itemSource, - $itemTarget, - $parent, - self::$shareTypeGroupUserUnique, - $uid, - $uidOwner, - $permissions, - time(), - $fileSource, - $fileTarget, - $token)); + $query->execute(array($itemType, $itemSource, $itemTarget, $parent, self::$shareTypeGroupUserUnique, $uid, $uidOwner, $permissions, time(), $fileSource, $fileTarget, $token)); $id = \OC_DB::insertid('*PREFIX*share'); } } @@ -1264,50 +1018,23 @@ class Share { return $parentFolders; } } else { - $itemTarget = self::generateTarget($itemType, - $itemSource, - $shareType, - $shareWith, - $uidOwner, - $suggestedItemTarget); + $itemTarget = self::generateTarget($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $suggestedItemTarget); if (isset($fileSource)) { if ($parentFolder) { if ($parentFolder === true) { - $fileTarget = self::generateTarget('file', - $filePath, - $shareType, - $shareWith, - $uidOwner, - $suggestedFileTarget); + $fileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith, $uidOwner, $suggestedFileTarget); $parentFolders['folder'] = $fileTarget; } else { $fileTarget = $parentFolder['folder'].$itemSource; $parent = $parentFolder['id']; } } else { - $fileTarget = self::generateTarget('file', - $filePath, - $shareType, - $shareWith, - $uidOwner, - $suggestedFileTarget); + $fileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith, $uidOwner, $suggestedFileTarget); } } else { $fileTarget = null; } - $query->execute(array( - $itemType, - $itemSource, - $itemTarget, - $parent, - $shareType, - $shareWith, - $uidOwner, - $permissions, - time(), - $fileSource, - $fileTarget, - $token)); + $query->execute(array($itemType, $itemSource, $itemTarget, $parent, $shareType, $shareWith, $uidOwner, $permissions, time(), $fileSource, $fileTarget, $token)); $id = \OC_DB::insertid('*PREFIX*share'); \OC_Hook::emit('OCP\Share', 'post_shared', array( 'itemType' => $itemType, @@ -1342,13 +1069,7 @@ class Share { * @param int The id of the parent group share (optional) * @return string Item target */ - private static function generateTarget($itemType, - $itemSource, - $shareType, - $shareWith, - $uidOwner, - $suggestedTarget = null, - $groupParent = null) { + private static function generateTarget($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $suggestedTarget = null, $groupParent = null) { $backend = self::getBackend($itemType); if ($shareType == self::SHARE_TYPE_LINK) { if (isset($suggestedTarget)) { @@ -1400,7 +1121,8 @@ class Share { } if ($item['uid_owner'] == $uidOwner) { if ($itemType == 'file' || $itemType == 'folder') { - if ($item['file_source'] == \OC_FileCache::getId($itemSource)) { + $meta = \OC\Files\Filesystem::getFileInfo($itemSource); + if ($item['file_source'] == $meta['fileid']) { return $target; } } else if ($item['item_source'] == $itemSource) { @@ -1414,43 +1136,18 @@ class Share { // Find similar targets to improve backend's chances to generate a unqiue target if ($userAndGroups) { if ($column == 'file_target') { - $checkTargets = \OC_DB::prepare('SELECT `'.$column.'`' - .' FROM `*PREFIX*share`' - .' WHERE `item_type` IN (\'file\', \'folder\')' - .' AND `share_type` IN (?,?,?)' - .' AND `share_with`' - .' IN (\''.implode('\',\'', $userAndGroups).'\')'); - $result = $checkTargets->execute(array( - self::SHARE_TYPE_USER, - self::SHARE_TYPE_GROUP, - self::$shareTypeGroupUserUnique)); + $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` IN (\'file\', \'folder\') AND `share_type` IN (?,?,?) AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\')'); + $result = $checkTargets->execute(array(self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique)); } else { - $checkTargets = \OC_DB::prepare('SELECT `'.$column.'`' - .' FROM `*PREFIX*share`' - .' WHERE `item_type` = ?' - .' AND `share_type` IN (?,?,?)' - .' AND `share_with`' - .' IN (\''.implode('\',\'', $userAndGroups).'\')'); - $result = $checkTargets->execute(array( - $itemType, - self::SHARE_TYPE_USER, - self::SHARE_TYPE_GROUP, - self::$shareTypeGroupUserUnique)); + $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` = ? AND `share_type` IN (?,?,?) AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\')'); + $result = $checkTargets->execute(array($itemType, self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique)); } } else { if ($column == 'file_target') { - $checkTargets = \OC_DB::prepare('SELECT `'.$column.'`' - .' FROM `*PREFIX*share`' - .' WHERE `item_type` IN (\'file\', \'folder\')' - .' AND `share_type` = ?' - .' AND `share_with` = ?'); + $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` IN (\'file\', \'folder\') AND `share_type` = ? AND `share_with` = ?'); $result = $checkTargets->execute(array(self::SHARE_TYPE_GROUP, $shareWith)); } else { - $checkTargets = \OC_DB::prepare('SELECT `'.$column.'`' - .' FROM `*PREFIX*share`' - .' WHERE `item_type` = ?' - .' AND `share_type` = ?' - .' AND `share_with` = ?'); + $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` = ? AND `share_type` = ? AND `share_with` = ?'); $result = $checkTargets->execute(array($itemType, self::SHARE_TYPE_GROUP, $shareWith)); } } @@ -1478,43 +1175,21 @@ class Share { $parents = array($parent); while (!empty($parents)) { $parents = "'".implode("','", $parents)."'"; - // Check the owner on the first search of reshares, - // useful for finding and deleting the reshares by a single user of a group share + // Check the owner on the first search of reshares, useful for finding and deleting the reshares by a single user of a group share if (count($ids) == 1 && isset($uidOwner)) { - $query = \OC_DB::prepare('SELECT `id`, `uid_owner`, `item_type`, `item_target`, `parent`' - .' FROM `*PREFIX*share`' - .' WHERE `parent` IN ('.$parents.')' - .' AND `uid_owner` = ?'); + $query = \OC_DB::prepare('SELECT `id`, `uid_owner`, `item_type`, `item_target`, `parent` FROM `*PREFIX*share` WHERE `parent` IN ('.$parents.') AND `uid_owner` = ?'); $result = $query->execute(array($uidOwner)); } else { - $query = \OC_DB::prepare('SELECT `id`, `item_type`, `item_target`, `parent`, `uid_owner`' - .' FROM `*PREFIX*share`' - .' WHERE `parent` IN ('.$parents.')'); + $query = \OC_DB::prepare('SELECT `id`, `item_type`, `item_target`, `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `parent` IN ('.$parents.')'); $result = $query->execute(); } // Reset parents array, only go through loop again if items are found $parents = array(); while ($item = $result->fetchRow()) { - // Search for a duplicate parent share, - // this occurs when an item is shared to the same user through a group and user - // or the same item is shared by different users + // Search for a duplicate parent share, this occurs when an item is shared to the same user through a group and user or the same item is shared by different users $userAndGroups = array_merge(array($item['uid_owner']), \OC_Group::getUserGroups($item['uid_owner'])); - $query = \OC_DB::prepare('SELECT `id`, `permissions`' - .' FROM `*PREFIX*share`' - .' WHERE `item_type` = ?' - .' AND `item_target` = ?' - .' AND `share_type` IN (?,?,?)' - .' AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\')' - .' AND `uid_owner` != ?' - .' AND `id` != ?'); - $duplicateParent = $query->execute(array( - $item['item_type'], - $item['item_target'], - self::SHARE_TYPE_USER, - self::SHARE_TYPE_GROUP, - self::$shareTypeGroupUserUnique, - $item['uid_owner'], - $item['parent']))->fetchRow(); + $query = \OC_DB::prepare('SELECT `id`, `permissions` FROM `*PREFIX*share` WHERE `item_type` = ? AND `item_target` = ? AND `share_type` IN (?,?,?) AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\') AND `uid_owner` != ? AND `id` != ?'); + $duplicateParent = $query->execute(array($item['item_type'], $item['item_target'], self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique, $item['uid_owner'], $item['parent']))->fetchRow(); if ($duplicateParent) { // Change the parent to the other item id if share permission is granted if ($duplicateParent['permissions'] & PERMISSION_SHARE) { @@ -1543,10 +1218,7 @@ class Share { public static function post_deleteUser($arguments) { // Delete any items shared with the deleted user - $query = \OC_DB::prepare('DELETE FROM `*PREFIX*share`' - .' WHERE `share_with` = ?' - .' AND `share_type` = ?' - .' OR `share_type` = ?'); + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `share_with` = ? AND `share_type` = ? OR `share_type` = ?'); $result = $query->execute(array($arguments['uid'], self::SHARE_TYPE_USER, self::$shareTypeGroupUserUnique)); // Delete any items the deleted user shared $query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*share` WHERE `uid_owner` = ?'); @@ -1560,46 +1232,21 @@ class Share { // Find the group shares and check if the user needs a unique target $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*share` WHERE `share_type` = ? AND `share_with` = ?'); $result = $query->execute(array(self::SHARE_TYPE_GROUP, $arguments['gid'])); - $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`,' - .' `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`,' - .' `file_target`)' - .' VALUES (?,?,?,?,?,?,?,?,?,?,?)'); + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`, `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`, `file_target`) VALUES (?,?,?,?,?,?,?,?,?,?,?)'); while ($item = $result->fetchRow()) { if ($item['item_type'] == 'file' || $item['item_type'] == 'file') { $itemTarget = null; } else { - $itemTarget = self::generateTarget($item['item_type'], - $item['item_source'], - self::SHARE_TYPE_USER, - $arguments['uid'], - $item['uid_owner'], - $item['item_target'], - $item['id']); + $itemTarget = self::generateTarget($item['item_type'], $item['item_source'], self::SHARE_TYPE_USER, $arguments['uid'], $item['uid_owner'], $item['item_target'], $item['id']); } if (isset($item['file_source'])) { - $fileTarget = self::generateTarget($item['item_type'], - $item['item_source'], - self::SHARE_TYPE_USER, - $arguments['uid'], - $item['uid_owner'], - $item['file_target'], - $item['id']); + $fileTarget = self::generateTarget($item['item_type'], $item['item_source'], self::SHARE_TYPE_USER, $arguments['uid'], $item['uid_owner'], $item['file_target'], $item['id']); } else { $fileTarget = null; } // Insert an extra row for the group share if the item or file target is unique for this user if ($itemTarget != $item['item_target'] || $fileTarget != $item['file_target']) { - $query->execute(array($item['item_type'], - $item['item_source'], - $itemTarget, - $item['id'], - self::$shareTypeGroupUserUnique, - $arguments['uid'], - $item['uid_owner'], - $item['permissions'], - $item['stime'], - $item['file_source'], - $fileTarget)); + $query->execute(array($item['item_type'], $item['item_source'], $itemTarget, $item['id'], self::$shareTypeGroupUserUnique, $arguments['uid'], $item['uid_owner'], $item['permissions'], $item['stime'], $item['file_source'], $fileTarget)); \OC_DB::insertid('*PREFIX*share'); } } @@ -1607,15 +1254,8 @@ class Share { public static function post_removeFromGroup($arguments) { // TODO Don't call if user deleted? - $query = \OC_DB::prepare('SELECT `id`, `share_type`' - .' FROM `*PREFIX*share`' - .' WHERE (`share_type` = ? AND `share_with` = ?)' - .' OR (`share_type` = ? AND `share_with` = ?)'); - $result = $query->execute(array( - self::SHARE_TYPE_GROUP, - $arguments['gid'], - self::$shareTypeGroupUserUnique, - $arguments['uid'])); + $query = \OC_DB::prepare('SELECT `id`, `share_type` FROM `*PREFIX*share` WHERE (`share_type` = ? AND `share_with` = ?) OR (`share_type` = ? AND `share_with` = ?)'); + $result = $query->execute(array(self::SHARE_TYPE_GROUP, $arguments['gid'], self::$shareTypeGroupUserUnique, $arguments['uid'])); while ($item = $result->fetchRow()) { if ($item['share_type'] == self::SHARE_TYPE_GROUP) { // Delete all reshares by this user of the group share @@ -1672,13 +1312,10 @@ interface Share_Backend { * @param int Format * @return ? * - * The items array is a 3-dimensional array with the item_source as the first key - * and the share id as the second key to an array with the share info. + * The items array is a 3-dimensional array with the item_source as the first key and the share id as the second key to an array with the share info. * The key/value pairs included in the share info depend on the function originally called: - * If called by getItem(s)Shared: id, item_type, item, item_source, - * share_type, share_with, permissions, stime, file_source - * If called by getItem(s)SharedWith: id, item_type, item, item_source, - * item_target, share_type, share_with, permissions, stime, file_source, file_target + * If called by getItem(s)Shared: id, item_type, item, item_source, share_type, share_with, permissions, stime, file_source + * If called by getItem(s)SharedWith: id, item_type, item, item_source, item_target, share_type, share_with, permissions, stime, file_source, file_target * This function allows the backend to control the output of shared items with custom formats. * It is only called through calls to the public getItem(s)Shared(With) functions. */ @@ -1711,8 +1348,7 @@ interface Share_Backend_Collection extends Share_Backend { /** * @brief Get the sources of the children of the item * @param string Item source - * @return array Returns an array of children each inside an array with the keys: - * source, target, and file_path if applicable + * @return array Returns an array of children each inside an array with the keys: source, target, and file_path if applicable */ public function getChildren($itemSource); diff --git a/lib/public/user.php b/lib/public/user.php index 204d8e4c0f1..de52055a4c5 100644 --- a/lib/public/user.php +++ b/lib/public/user.php @@ -51,7 +51,25 @@ class User { public static function getUsers($search = '', $limit = null, $offset = null) { return \OC_USER::getUsers(); } - + + /**
+ * @brief get the user display name of the user currently logged in.
+ * @return string display name
+ */
+ public static function getDisplayName($user=null) {
+ return \OC_USER::getDisplayName($user);
+ } + + /**
+ * @brief Get a list of all display names
+ * @returns array with all display names (value) and the correspondig uids (key)
+ *
+ * Get a list of all display names and user ids.
+ */
+ public static function getDisplayNames($search = '', $limit = null, $offset = null) {
+ return \OC_USER::getDisplayNames($search, $limit, $offset);
+ } + /** * @brief Check if the user is logged in * @returns true/false diff --git a/lib/search/provider/file.php b/lib/search/provider/file.php index ea536ef77de..4d88c2a87f1 100644 --- a/lib/search/provider/file.php +++ b/lib/search/provider/file.php @@ -2,7 +2,7 @@ class OC_Search_Provider_File extends OC_Search_Provider{ function search($query) { - $files=OC_FileCache::search($query, true); + $files=\OC\Files\Filesystem::search($query, true); $results=array(); $l=OC_L10N::get('lib'); foreach($files as $fileData) { diff --git a/lib/template.php b/lib/template.php index f7124ebc09c..238d8a8ad0f 100644 --- a/lib/template.php +++ b/lib/template.php @@ -186,9 +186,15 @@ class OC_Template{ $this->l10n = OC_L10N::get($parts[0]); // Some headers to enhance security - header('X-Frame-Options: Sameorigin'); - header('X-XSS-Protection: 1; mode=block'); - header('X-Content-Type-Options: nosniff'); + header('X-Frame-Options: Sameorigin'); // Disallow iFraming from other domains + header('X-XSS-Protection: 1; mode=block'); // Enforce browser based XSS filters + header('X-Content-Type-Options: nosniff'); // Disable sniffing the content type for IE + + // Content Security Policy + // If you change the standard policy, please also change it in config.sample.php + $policy = OC_Config::getValue('custom_csp_policy', 'default-src \'self\'; script-src \'self\' \'unsafe-eval\'; style-src \'self\' \'unsafe-inline\'; frame-src *; img-src *'); + header('Content-Security-Policy:'.$policy); // Standard + header('X-WebKit-CSP:'.$policy); // Older webkit browsers $this->findTemplate($name); } diff --git a/lib/templatelayout.php b/lib/templatelayout.php index 83d36199986..37ece91047f 100644 --- a/lib/templatelayout.php +++ b/lib/templatelayout.php @@ -28,11 +28,6 @@ class OC_TemplateLayout extends OC_Template { break; } } - $apps_paths = array(); - foreach(OC_App::getEnabledApps() as $app) { - $apps_paths[$app] = OC_App::getAppWebPath($app); - } - $this->assign( 'apps_paths', str_replace('\\/', '/', json_encode($apps_paths)), false ); // Ugly unescape slashes waiting for better solution } else if ($renderas == 'guest') { parent::__construct('core', 'layout.guest'); } else { diff --git a/lib/user.php b/lib/user.php index fd0ed6ecd3a..38259bceea5 100644 --- a/lib/user.php +++ b/lib/user.php @@ -251,6 +251,7 @@ class OC_User { if($uid && $enabled) { session_regenerate_id(true); self::setUserId($uid); + self::setDisplayName($uid); OC_Hook::emit( "OC_User", "post_login", array( "uid" => $uid, 'password'=>$password )); return true; } @@ -266,6 +267,48 @@ class OC_User { } /** + * @brief Sets user display name for session + */ + public static function setDisplayName($uid, $displayName = null) { + $result = false; + if ($displayName ) { + foreach(self::$_usedBackends as $backend) { + if($backend->implementsActions(OC_USER_BACKEND_SET_DISPLAYNAME)) { + if($backend->userExists($uid)) { + $success |= $backend->setDisplayName($uid, $displayName); + } + } + } + } else { + $displayName = self::determineDisplayName($uid); + $result = true; + } + if (OC_User::getUser() === $uid) { + $_SESSION['display_name'] = $displayName; + } + return $result; + } + + + /** + * @brief get display name + * @param $uid The username + * @returns string display name or uid if no display name is defined + * + */ + private static function determineDisplayName( $uid ) { + foreach(self::$_usedBackends as $backend) { + if($backend->implementsActions(OC_USER_BACKEND_GET_DISPLAYNAME)) { + $result=$backend->getDisplayName( $uid ); + if($result) { + return $result; + } + } + } + return $uid; + } + + /** * @brief Logs the current user out and kills all the session data * * Logout, destroys session @@ -321,6 +364,21 @@ class OC_User { } /** + * @brief get the display name of the user currently logged in. + * @return string uid or false + */ + public static function getDisplayName($user=null) { + if ( $user ) { + return self::determineDisplayName($user); + } else if( isset($_SESSION['display_name']) AND $_SESSION['display_name'] ) { + return $_SESSION['display_name']; + } + else{ + return false; + } + } + + /** * @brief Autogenerate a password * @returns string * @@ -383,8 +441,8 @@ class OC_User { /** * @brief Check if the password is correct - * @param $uid The username - * @param $password The password + * @param string $uid The username + * @param string $password The password * @returns string * * returns the path to the users home directory @@ -420,6 +478,24 @@ class OC_User { } /** + * @brief Get a list of all users display name + * @returns associative array with all display names (value) and corresponding uids (key) + * + * Get a list of all display names and user ids. + */ + public static function getDisplayNames($search = '', $limit = null, $offset = null) { + $displayNames = array(); + foreach (self::$_usedBackends as $backend) { + $backendDisplayNames = $backend->getDisplayNames($search, $limit, $offset); + if (is_array($backendDisplayNames)) { + $displayNames = array_merge($displayNames, $backendDisplayNames); + } + } + ksort($displayNames); + return $displayNames; + } + + /** * @brief check if a user exists * @param string $uid the username * @param string $excludingBackend (default none) diff --git a/lib/user/backend.php b/lib/user/backend.php index 2a95db93690..56fa3195978 100644 --- a/lib/user/backend.php +++ b/lib/user/backend.php @@ -35,6 +35,8 @@ define('OC_USER_BACKEND_CREATE_USER', 0x000001); define('OC_USER_BACKEND_SET_PASSWORD', 0x000010); define('OC_USER_BACKEND_CHECK_PASSWORD', 0x000100); define('OC_USER_BACKEND_GET_HOME', 0x001000); +define('OC_USER_BACKEND_GET_DISPLAYNAME', 0x010000); +define('OC_USER_BACKEND_SET_DISPLAYNAME', 0x010000); /** @@ -50,6 +52,8 @@ abstract class OC_User_Backend implements OC_User_Interface { OC_USER_BACKEND_SET_PASSWORD => 'setPassword', OC_USER_BACKEND_CHECK_PASSWORD => 'checkPassword', OC_USER_BACKEND_GET_HOME => 'getHome', + OC_USER_BACKEND_GET_DISPLAYNAME => 'getDisplayName', + OC_USER_BACKEND_SET_DISPLAYNAME => 'setDisplayName', ); /** @@ -120,4 +124,28 @@ abstract class OC_User_Backend implements OC_User_Interface { public function getHome($uid) { return false; } + + /** + * @brief get display name of the user + * @param $uid user ID of the user + * @return display name + */ + public function getDisplayName($uid) { + return $uid; + } + + /**
+ * @brief Get a list of all display names
+ * @returns array with all displayNames (value) and the correspondig uids (key)
+ *
+ * Get a list of all display names and user ids.
+ */
+ public function getDisplayNames($search = '', $limit = null, $offset = null) {
+ $displayNames = array(); + $users = $this->getUsers($search, $limit, $offset); + foreach ( $users as $user) { + $displayNames[$user] = $user; + } + return $displayNames;
+ } } diff --git a/lib/user/database.php b/lib/user/database.php index f33e338e2e4..8dfd9534a96 100644 --- a/lib/user/database.php +++ b/lib/user/database.php @@ -110,7 +110,72 @@ class OC_User_Database extends OC_User_Backend { return false; } } + + /**
+ * @brief Set display name
+ * @param $uid The username
+ * @param $displayName The new display name
+ * @returns true/false
+ *
+ * Change the display name of a user
+ */ + public function setDisplayName( $uid, $displayName ) { + if( $this->userExists($uid) ) {
+ $query = OC_DB::prepare( 'UPDATE `*PREFIX*users` SET `displayname` = ? WHERE `uid` = ?' );
+ $query->execute( array( $displayName, $uid ));
+ return true;
+ }else{
+ return false;
+ }
+ } + /**
+ * @brief get display name of the user
+ * @param $uid user ID of the user
+ * @return display name
+ */
+ public function getDisplayName($uid) {
+ if( $this->userExists($uid) ) { + $query = OC_DB::prepare( 'SELECT displayname FROM `*PREFIX*users` WHERE `uid` = ?' ); + $result = $query->execute( array( $uid ))->fetchAll(); + $displayName = trim($result[0]['displayname'], ' '); + if ( !empty($displayName) ) { + return $displayName; + } else { + return $uid; + } + }
+ } + + /**
+ * @brief Get a list of all display names
+ * @returns array with all displayNames (value) and the correspondig uids (key)
+ *
+ * Get a list of all display names and user ids.
+ */
+ public function getDisplayNames($search = '', $limit = null, $offset = null) { + $displayNames = array(); + $query = OC_DB::prepare('SELECT `uid`, `displayname` FROM `*PREFIX*users` WHERE LOWER(`displayname`) LIKE LOWER(?)', $limit, $offset);
+ $result = $query->execute(array($search.'%')); + $users = array();
+ while ($row = $result->fetchRow()) {
+ $displayNames[$row['uid']] = $row['displayname'];
+ } + + // let's see if we can also find some users who don't have a display name yet + $query = OC_DB::prepare('SELECT `uid`, `displayname` FROM `*PREFIX*users` WHERE LOWER(`uid`) LIKE LOWER(?)', $limit, $offset);
+ $result = $query->execute(array($search.'%')); + while ($row = $result->fetchRow()) {
+ $displayName = trim($row['displayname'], ' '); + if ( empty($displayName) ) {
+ $displayNames[$row['uid']] = $row['uid']; + }
+ } + +
+ return $displayNames;
+ } + /** * @brief Check if the password is correct * @param $uid The username diff --git a/lib/user/interface.php b/lib/user/interface.php index 3d9f4691f24..b4667633b50 100644 --- a/lib/user/interface.php +++ b/lib/user/interface.php @@ -57,4 +57,19 @@ interface OC_User_Interface { */ public function userExists($uid); + /** + * @brief get display name of the user + * @param $uid user ID of the user + * @return display name + */ + public function getDisplayName($uid); + + /** + * @brief Get a list of all display names + * @returns array with all displayNames (value) and the correspondig uids (key) + * + * Get a list of all display names and user ids. + */ + public function getDisplayNames($search = '', $limit = null, $offset = null); + }
\ No newline at end of file diff --git a/lib/util.php b/lib/util.php index 374baa43dbe..e8057abe9ae 100755 --- a/lib/util.php +++ b/lib/util.php @@ -39,7 +39,7 @@ class OC_Util { $CONFIG_DATADIRECTORY = OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ); //first set up the local "root" storage if(!self::$rootMounted) { - OC_Filesystem::mount('OC_Filestorage_Local', array('datadir'=>$CONFIG_DATADIRECTORY), '/'); + \OC\Files\Filesystem::mount('\OC\Files\Storage\Local', array('datadir'=>$CONFIG_DATADIRECTORY), '/'); self::$rootMounted=true; } @@ -51,51 +51,30 @@ class OC_Util { mkdir( $userdirectory, 0755, true ); } //jail the user into his "home" directory - OC_Filesystem::mount('OC_Filestorage_Local', array('datadir' => $user_root), $user); - OC_Filesystem::init($user_dir, $user); + \OC\Files\Filesystem::init($user_dir); + $quotaProxy=new OC_FileProxy_Quota(); $fileOperationProxy = new OC_FileProxy_FileOperations(); OC_FileProxy::register($quotaProxy); OC_FileProxy::register($fileOperationProxy); - // Load personal mount config - self::loadUserMountPoints($user); + OC_Hook::emit('OC_Filesystem', 'setup', array('user' => $user, 'user_dir' => $user_dir)); } + return true; } public static function tearDownFS() { - OC_Filesystem::tearDown(); + \OC\Files\Filesystem::tearDown(); self::$fsSetup=false; } - public static function loadUserMountPoints($user) { - $user_dir = '/'.$user.'/files'; - $user_root = OC_User::getHome($user); - $userdirectory = $user_root . '/files'; - if (is_file($user_root.'/mount.php')) { - $mountConfig = include $user_root.'/mount.php'; - if (isset($mountConfig['user'][$user])) { - foreach ($mountConfig['user'][$user] as $mountPoint => $options) { - OC_Filesystem::mount($options['class'], $options['options'], $mountPoint); - } - } - - $mtime=filemtime($user_root.'/mount.php'); - $previousMTime=OC_Preferences::getValue($user, 'files', 'mountconfigmtime', 0); - if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated - OC_FileCache::triggerUpdate($user); - OC_Preferences::setValue($user, 'files', 'mountconfigmtime', $mtime); - } - } - } - /** * get the current installed version of ownCloud * @return array */ 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, 02); + return array(4, 91, 9); } /** @@ -157,14 +136,14 @@ class OC_Util { * @param string $text the text content for the element */ public static function addHeader( $tag, $attributes, $text='') { - self::$headers[]=array('tag'=>$tag,'attributes'=>$attributes, 'text'=>$text); + self::$headers[] = array('tag'=>$tag, 'attributes'=>$attributes, 'text'=>$text); } /** * formats a timestamp in the "right" way * * @param int timestamp $timestamp - * @param bool dateOnly option to ommit time from the result + * @param bool dateOnly option to omit time from the result */ public static function formatDate( $timestamp, $dateOnly=false) { if(isset($_SESSION['timezone'])) {//adjust to clients timezone if we know it @@ -398,6 +377,17 @@ class OC_Util { } /** + * @brief Static lifespan (in seconds) when a request token expires. + * @see OC_Util::callRegister() + * @see OC_Util::isCallRegistered() + * @description + * Also required for the client side to compute the piont in time when to + * request a fresh token. The client will do so when nearly 97% of the + * timespan coded here has expired. + */ + public static $callLifespan = 3600; // 3600 secs = 1 hour + + /** * @brief Register an get/post call. Important to prevent CSRF attacks. * @todo Write howto: CSRF protection guide * @return $token Generated token. @@ -405,6 +395,8 @@ class OC_Util { * Creates a 'request token' (random) and stores it inside the session. * Ever subsequent (ajax) request must use such a valid token to succeed, * otherwise the request will be denied as a protection against CSRF. + * The tokens expire after a fixed lifespan. + * @see OC_Util::$callLifespan * @see OC_Util::isCallRegistered() */ public static function callRegister() { @@ -423,6 +415,7 @@ class OC_Util { /** * @brief Check an ajax get/post call if the request token is valid. * @return boolean False if request token is not set or is invalid. + * @see OC_Util::$callLifespan * @see OC_Util::callRegister() */ public static function isCallRegistered() { diff --git a/robots.txt b/robots.txt new file mode 100644 index 00000000000..1f53798bb4f --- /dev/null +++ b/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: / diff --git a/settings/ajax/changedisplayname.php b/settings/ajax/changedisplayname.php new file mode 100644 index 00000000000..f80ecb7a0c9 --- /dev/null +++ b/settings/ajax/changedisplayname.php @@ -0,0 +1,28 @@ +<?php
+// Check if we are a user
+OCP\JSON::callCheck();
+OC_JSON::checkLoggedIn();
+
+$username = isset($_POST["username"]) ? $_POST["username"] : OC_User::getUser();
+$displayName = $_POST["displayName"];
+
+$userstatus = null;
+if(OC_User::isAdminUser(OC_User::getUser())) {
+ $userstatus = 'admin';
+}
+if(OC_SubAdmin::isUserAccessible(OC_User::getUser(), $username)) {
+ $userstatus = 'subadmin';
+}
+
+if(is_null($userstatus)) {
+ OC_JSON::error( array( "data" => array( "message" => "Authentication error" )));
+ exit();
+}
+
+// Return Success story
+if( OC_User::setDisplayName( $username, $displayName )) {
+ OC_JSON::success(array("data" => array( "username" => $username )));
+}
+else{
+ OC_JSON::error(array("data" => array( "message" => "Unable to change display name" )));
+}
\ No newline at end of file diff --git a/settings/apps.php b/settings/apps.php index 99a3094399d..b6426a31c97 100644 --- a/settings/apps.php +++ b/settings/apps.php @@ -26,99 +26,8 @@ OC_App::loadApps(); // Load the files we need OC_Util::addStyle( "settings", "settings" ); -OC_Util::addScript( "settings", "apps" ); OC_App::setActiveNavigationEntry( "core_apps" ); -$installedApps = OC_App::getAllApps(); - -//TODO which apps do we want to blacklist and how do we integrate blacklisting with the multi apps folder feature? - -$blacklist = array('files');//we dont want to show configuration for these - -$appList = array(); - -foreach ( $installedApps as $app ) { - - if ( array_search( $app, $blacklist ) === false ) { - - $info=OC_App::getAppInfo($app); - - if (!isset($info['name'])) { - - OC_Log::write('core', 'App id "'.$app.'" has no name in appinfo', OC_Log::ERROR); - - continue; - - } - - if ( OC_Appconfig::getValue( $app, 'enabled', 'no') == 'yes' ) { - - $active = true; - - } else { - - $active = false; - - } - - $info['active'] = $active; - - if(isset($info['shipped']) and ($info['shipped']=='true')) { - - $info['internal']=true; - - $info['internallabel']='Internal App'; - - }else{ - - $info['internal']=false; - - $info['internallabel']='3rd Party App'; - - } - - $info['preview'] = OC_Helper::imagePath('settings', 'trans.png'); - - $info['version'] = OC_App::getAppVersion($app); - - $appList[] = $info; - - } -} - -$remoteApps = OC_App::getAppstoreApps(); - -if ( $remoteApps ) { - - // Remove duplicates - foreach ( $appList as $app ) { - - foreach ( $remoteApps AS $key => $remote ) { - - if ( - $app['name'] == $remote['name'] - // To set duplicate detection to use OCS ID instead of string name, - // enable this code, remove the line of code above, - // and add <ocs_id>[ID]</ocs_id> to info.xml of each 3rd party app: - // OR $app['ocs_id'] == $remote['ocs_id'] - ) { - - unset( $remoteApps[$key]); - - } - - } - - } - - $combinedApps = array_merge( $appList, $remoteApps ); - -} else { - - $combinedApps = $appList; - -} - function app_sort( $a, $b ) { if ($a['active'] != $b['active']) { @@ -131,6 +40,7 @@ function app_sort( $a, $b ) { } +$combinedApps = OC_App::listAllApps(); usort( $combinedApps, 'app_sort' ); $tmpl = new OC_Template( "settings", "apps", "user" ); diff --git a/settings/js/apps-custom.php b/settings/js/apps-custom.php new file mode 100644 index 00000000000..9ec2a758ee3 --- /dev/null +++ b/settings/js/apps-custom.php @@ -0,0 +1,26 @@ +<?php +/** + * Copyright (c) 2013 Lukas Reschke <lukas@statuscode.ch> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +// Check if admin user +OC_Util::checkAdminUser(); + +// Set the content type to JSON +header('Content-type: application/json'); + +// Disallow caching +header("Cache-Control: no-cache, must-revalidate"); +header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); + +$combinedApps = OC_App::listAllApps(); + +foreach($combinedApps as $app) { + echo("appData_".$app['id']."=".json_encode($app)); + echo("\n"); +} + +echo ("var appid =\"".$_GET['appid']."\";");
\ No newline at end of file diff --git a/settings/js/isadmin.php b/settings/js/isadmin.php new file mode 100644 index 00000000000..8b31f8a7cf9 --- /dev/null +++ b/settings/js/isadmin.php @@ -0,0 +1,20 @@ +<?php +/** + * Copyright (c) 2013 Lukas Reschke <lukas@statuscode.ch> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +// Set the content type to Javascript +header("Content-type: text/javascript"); + +// Disallow caching +header("Cache-Control: no-cache, must-revalidate"); +header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); + +if (OC_User::isAdminUser(OC_User::getUser())) { + echo("var isadmin = true;"); +} else { + echo("var isadmin = false;"); +}
\ No newline at end of file diff --git a/settings/js/users.js b/settings/js/users.js index fa6f058d923..424d00b51a7 100644 --- a/settings/js/users.js +++ b/settings/js/users.js @@ -26,9 +26,8 @@ var UserList = { UserList.deleteCanceled = false; // Provide user with option to undo - $('#notification').html(t('users', 'deleted') + ' ' + uid + '<span class="undo">' + t('users', 'undo') + '</span>'); $('#notification').data('deleteuser', true); - $('#notification').fadeIn(); + OC.Notification.showHtml(t('users', 'deleted') + ' ' + uid + '<span class="undo">' + t('users', 'undo') + '</span>'); }, /** @@ -53,7 +52,7 @@ var UserList = { success:function (result) { if (result.status == 'success') { // Remove undo option, & remove user from table - $('#notification').fadeOut(); + OC.Notification.hide(); $('tr').filterAttr('data-uid', UserList.deleteUid).remove(); UserList.deleteCanceled = true; if (ready) { @@ -70,7 +69,9 @@ var UserList = { add:function (username, groups, subadmin, quota, sort) { var tr = $('tbody tr').first().clone(); tr.attr('data-uid', username); + tr.attr('data-displayName', username); tr.find('td.name').text(username); + tr.find('td.displayName').text(username); var groupsSelect = $('<select multiple="multiple" class="groupsselect" data-placehoder="Groups" title="' + t('settings', 'Groups') + '"></select>').attr('data-username', username).attr('data-user-groups', groups); tr.find('td.groups').empty(); if (tr.find('td.subadmins').length > 0) { @@ -197,7 +198,7 @@ var UserList = { checked:checked, oncheck:checkHandeler, onuncheck:checkHandeler, - minWidth:100, + minWidth:100 }); } if ($(element).attr('class') == 'subadminsselect') { @@ -232,7 +233,7 @@ var UserList = { checked:checked, oncheck:checkHandeler, onuncheck:checkHandeler, - minWidth:100, + minWidth:100 }); } } @@ -300,6 +301,40 @@ $(document).ready(function () { $('td.password').live('click', function (event) { $(this).children('img').click(); }); + + $('td.displayName>img').live('click', function (event) { + event.stopPropagation(); + var img = $(this); + var uid = img.parent().parent().attr('data-uid'); + var displayName = img.parent().parent().attr('data-displayName'); + var input = $('<input type="text" value="'+displayName+'">'); + img.css('display', 'none'); + img.parent().children('span').replaceWith(input); + input.focus(); + input.keypress(function (event) { + if (event.keyCode == 13) { + if ($(this).val().length > 0) { + $.post( + OC.filePath('settings', 'ajax', 'changedisplayname.php'), + {username:uid, displayName:$(this).val()}, + function (result) { + } + ); + input.blur(); + } else { + input.blur(); + } + } + }); + input.blur(function () { + $(this).replaceWith($(this).val()); + img.css('display', ''); + }); + }); + $('td.displayName').live('click', function (event) { + $(this).children('img').click(); + }); + $('select.quota, select.quota-user').live('change', function () { var select = $(this); @@ -389,7 +424,7 @@ $(document).ready(function () { { username:username, password:password, - groups:groups, + groups:groups }, function (result) { if (result.status != 'success') { @@ -402,13 +437,13 @@ $(document).ready(function () { ); }); // Handle undo notifications - $('#notification').hide(); + OC.Notification.hide(); $('#notification .undo').live('click', function () { if ($('#notification').data('deleteuser')) { $('tbody tr').filterAttr('data-uid', UserList.deleteUid).show(); UserList.deleteCanceled = true; } - $('#notification').fadeOut(); + OC.Notification.hide(); }); UserList.useUndo = ('onbeforeunload' in window) $(window).bind('beforeunload', function () { diff --git a/settings/l10n/ar.php b/settings/l10n/ar.php index 20d4cced233..2870527781a 100644 --- a/settings/l10n/ar.php +++ b/settings/l10n/ar.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "إستخدم هذا العنوان للإتصال بـ ownCloud ÙÙŠ مدير Ø§Ù„Ù…Ù„ÙØ§Øª", "Version" => "إصدار", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "طوّر من قبل <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud مجتمع</a>, الـ <a href=\"https://github.com/owncloud\" target=\"_blank\">النص المصدري</a> مرخص بموجب <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">رخصة Ø£Ùيرو العمومية</abbr></a>.", -"Name" => "الاسم", "Groups" => "مجموعات", "Create" => "انشئ", "Other" => "شيء آخر", diff --git a/settings/l10n/bg_BG.php b/settings/l10n/bg_BG.php index dc4c1cf6431..bee057a998f 100644 --- a/settings/l10n/bg_BG.php +++ b/settings/l10n/bg_BG.php @@ -4,7 +4,6 @@ "Enable" => "Включено", "Password" => "Парола", "Email" => "E-mail", -"Name" => "Име", "Groups" => "Групи", "Delete" => "Изтриване" ); diff --git a/settings/l10n/bn_BD.php b/settings/l10n/bn_BD.php index bab6d9ec19c..fc85e705750 100644 --- a/settings/l10n/bn_BD.php +++ b/settings/l10n/bn_BD.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "আপনার ownCloud ঠসংযà§à¦•à§à¦¤ হতে à¦à¦‡ ঠিকানাটি আপনার ফাইল বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾à¦ªà¦•ে বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨", "Version" => "à¦à¦¾à¦°à§à¦¸à¦¨", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "তৈলী করেছেন <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud সমà§à¦ªà§à¦°à¦¦à¦¾à§Ÿ</a>, যার <a href=\"https://github.com/owncloud\" target=\"_blank\"> উৎস কোডটি <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> à¦à¦° অধীনে লাইসেনà§à¦¸à¦•ৃত।", -"Name" => "রাম", "Groups" => "গোষà§à¦ ীসমূহ", "Create" => "তৈরী কর", "Default Storage" => "পূরà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ সংরকà§à¦·à¦£à¦¾à¦—ার", diff --git a/settings/l10n/ca.php b/settings/l10n/ca.php index 35952475254..2f9bcba4a5c 100644 --- a/settings/l10n/ca.php +++ b/settings/l10n/ca.php @@ -49,14 +49,17 @@ "Use this address to connect to your ownCloud in your file manager" => "Useu aquesta adreça per connectar amb ownCloud des del gestor de fitxers", "Version" => "Versió", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Desenvolupat per la <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunitat ownCloud</a>, el <a href=\"https://github.com/owncloud\" target=\"_blank\">codi font</a> té llicència <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Nom", +"Login Name" => "Nom d'accés", "Groups" => "Grups", "Create" => "Crea", "Default Storage" => "Emmagatzemament per defecte", "Unlimited" => "Il·limitat", "Other" => "Un altre", +"Display Name" => "Nom a mostrar", "Group Admin" => "Grup Admin", "Storage" => "Emmagatzemament", +"change display name" => "canvia el nom a mostrar", +"set new password" => "estableix nova contrasenya", "Default" => "Per defecte", "Delete" => "Suprimeix" ); diff --git a/settings/l10n/cs_CZ.php b/settings/l10n/cs_CZ.php index d20861764a9..a2d8e335dcb 100644 --- a/settings/l10n/cs_CZ.php +++ b/settings/l10n/cs_CZ.php @@ -49,14 +49,17 @@ "Use this address to connect to your ownCloud in your file manager" => "Použijte tuto adresu pro pÅ™ipojenà k vaÅ¡emu ownCloud skrze správce souborů", "Version" => "Verze", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Vyvinuto <a href=\"http://ownCloud.org/contact\" target=\"_blank\">komunitou ownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">zdrojový kód</a> je licencován pod <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Jméno", +"Login Name" => "PÅ™ihlaÅ¡ovacà jméno", "Groups" => "Skupiny", "Create" => "VytvoÅ™it", "Default Storage" => "Výchozà úložiÅ¡tÄ›", "Unlimited" => "NeomezenÄ›", "Other" => "Jiná", +"Display Name" => "Zobrazované jméno", "Group Admin" => "Správa skupiny", "Storage" => "ÚložiÅ¡tÄ›", +"change display name" => "zmÄ›nit zobrazované jméno", +"set new password" => "nastavit nové heslo", "Default" => "VýchozÃ", "Delete" => "Smazat" ); diff --git a/settings/l10n/da.php b/settings/l10n/da.php index 021d7f814bb..f0842922d62 100644 --- a/settings/l10n/da.php +++ b/settings/l10n/da.php @@ -49,7 +49,6 @@ "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 <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Udviklet af <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownClouds community</a>, og <a href=\"https://github.com/owncloud\" target=\"_blank\">kildekoden</a> er underlagt licensen <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Navn", "Groups" => "Grupper", "Create" => "Ny", "Default Storage" => "Standard opbevaring", diff --git a/settings/l10n/de.php b/settings/l10n/de.php index 3bb53f99b2e..d2a9a826aaf 100644 --- a/settings/l10n/de.php +++ b/settings/l10n/de.php @@ -29,7 +29,7 @@ "Bugtracker" => "Bugtracker", "Commercial Support" => "Kommerzieller Support", "You have used <strong>%s</strong> of the available <strong>%s</strong>" => "Du verwendest <strong>%s</strong> der verfügbaren <strong>%s<strong>", -"Clients" => "Kunden", +"Clients" => "Clients", "Download Desktop Clients" => "Desktop-Client herunterladen", "Download Android Client" => "Android-Client herunterladen", "Download iOS Client" => "iOS-Client herunterladen", @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "Verwende diese Adresse, um Deinen Dateimanager mit Deiner ownCloud zu verbinden", "Version" => "Version", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Entwickelt von der <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud-Community</a>, der <a href=\"https://github.com/owncloud\" target=\"_blank\">Quellcode</a> ist unter der <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> lizenziert.", -"Name" => "Name", "Groups" => "Gruppen", "Create" => "Anlegen", "Default Storage" => "Standard-Speicher", diff --git a/settings/l10n/de_DE.php b/settings/l10n/de_DE.php index dd129fc59eb..cb735adfdf9 100644 --- a/settings/l10n/de_DE.php +++ b/settings/l10n/de_DE.php @@ -29,7 +29,7 @@ "Bugtracker" => "Bugtracker", "Commercial Support" => "Kommerzieller Support", "You have used <strong>%s</strong> of the available <strong>%s</strong>" => "Sie verwenden <strong>%s</strong> der verfügbaren <strong>%s</strong>", -"Clients" => "Kunden", +"Clients" => "Clients", "Download Desktop Clients" => "Desktop-Client herunterladen", "Download Android Client" => "Android-Client herunterladen", "Download iOS Client" => "iOS-Client herunterladen", @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "Verwenden Sie diese Adresse, um Ihren Dateimanager mit Ihrer ownCloud zu verbinden", "Version" => "Version", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Entwickelt von der <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud-Community</a>. Der <a href=\"https://github.com/owncloud\" target=\"_blank\">Quellcode</a> ist unter der <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> lizenziert.", -"Name" => "Name", "Groups" => "Gruppen", "Create" => "Anlegen", "Default Storage" => "Standard-Speicher", diff --git a/settings/l10n/el.php b/settings/l10n/el.php index ffd6d2a60bf..beacb5e6147 100644 --- a/settings/l10n/el.php +++ b/settings/l10n/el.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "ΧÏήση αυτής της διεÏθυνσης για σÏνδεση στο ownCloud με τον διαχειÏιστή αÏχείων σας", "Version" => "Έκδοση", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "ΑναπτÏχθηκε από την <a href=\"http://ownCloud.org/contact\" target=\"_blank\">κοινότητα ownCloud</a>, ο <a href=\"https://github.com/owncloud\" target=\"_blank\">πηγαίος κώδικας</a> είναι υπό άδεια χÏήσης <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Όνομα", "Groups" => "Ομάδες", "Create" => "ΔημιουÏγία", "Default Storage" => "Î ÏοκαθοÏισμÎνη Αποθήκευση ", diff --git a/settings/l10n/eo.php b/settings/l10n/eo.php index ef8615e24e4..e17380441cf 100644 --- a/settings/l10n/eo.php +++ b/settings/l10n/eo.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "Uzu ĉi tiun adreson por konekti al via ownCloud vian dosieradministrilon", "Version" => "Eldono", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Ellaborita de la <a href=\"http://ownCloud.org/contact\" target=\"_blank\">komunumo de ownCloud</a>, la <a href=\"https://github.com/owncloud\" target=\"_blank\">fontokodo</a> publikas laÅ la permesilo <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Nomo", "Groups" => "Grupoj", "Create" => "Krei", "Default Storage" => "DefaÅlta konservejo", diff --git a/settings/l10n/es.php b/settings/l10n/es.php index 5434da7f981..2bc2a12a5a9 100644 --- a/settings/l10n/es.php +++ b/settings/l10n/es.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "Use esta dirección para conectarse a su cuenta de ownCloud en el administrador de archivos", "Version" => "Version", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Desarrollado por la <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunidad ownCloud</a>, el <a href=\"https://github.com/owncloud\" target=\"_blank\">código fuente</a> está bajo licencia <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Nombre", "Groups" => "Grupos", "Create" => "Crear", "Default Storage" => "Almacenamiento Predeterminado", diff --git a/settings/l10n/es_AR.php b/settings/l10n/es_AR.php index a652ee13103..ce807b642ec 100644 --- a/settings/l10n/es_AR.php +++ b/settings/l10n/es_AR.php @@ -24,7 +24,7 @@ "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" => "<span class=\"licence\"></span>-licenciado por <span class=\"author\">", "User Documentation" => "Documentación de Usuario", "Administrator Documentation" => "Documentación de Administrador", -"Online Documentation" => "Documentación en linea", +"Online Documentation" => "Documentación en lÃnea", "Forum" => "Foro", "Bugtracker" => "Informar errores", "Commercial Support" => "Soporte comercial", @@ -49,12 +49,13 @@ "Use this address to connect to your ownCloud in your file manager" => "Utiliza esta dirección para conectarte con ownCloud en tu Administrador de Archivos", "Version" => "Versión", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Desarrollado por la <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunidad ownCloud</a>, el <a href=\"https://github.com/owncloud\" target=\"_blank\">código fuente</a> está bajo licencia <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Nombre", +"Login Name" => "Nombre de ", "Groups" => "Grupos", "Create" => "Crear", "Default Storage" => "Almacenamiento Predeterminado", "Unlimited" => "Ilimitado", "Other" => "Otro", +"Display Name" => "Nombre a mostrar", "Group Admin" => "Grupo Administrador", "Storage" => "Almacenamiento", "Default" => "Predeterminado", diff --git a/settings/l10n/et_EE.php b/settings/l10n/et_EE.php index 53f61717282..751c88ecb59 100644 --- a/settings/l10n/et_EE.php +++ b/settings/l10n/et_EE.php @@ -34,7 +34,6 @@ "Fill in an email address to enable password recovery" => "Parooli taastamise sisse lülitamiseks sisesta e-posti aadress", "Language" => "Keel", "Help translate" => "Aita tõlkida", -"Name" => "Nimi", "Groups" => "Grupid", "Create" => "Lisa", "Other" => "Muu", diff --git a/settings/l10n/eu.php b/settings/l10n/eu.php index c122f3b1cda..dd9eb48304e 100644 --- a/settings/l10n/eu.php +++ b/settings/l10n/eu.php @@ -49,12 +49,13 @@ "Use this address to connect to your ownCloud in your file manager" => "Erabili helbide hau zure fitxategi kudeatzailean zure ownCloudera konektatzeko", "Version" => "Bertsioa", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "<a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud komunitateak</a> garatuta, <a href=\"https://github.com/owncloud\" target=\"_blank\">itubruru kodea</a><a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr> lizentziarekin banatzen da</a>.", -"Name" => "Izena", +"Login Name" => "Sarrera Izena", "Groups" => "Taldeak", "Create" => "Sortu", "Default Storage" => "Lehenetsitako Biltegiratzea", "Unlimited" => "Mugarik gabe", "Other" => "Besteak", +"Display Name" => "Bistaratze Izena", "Group Admin" => "Talde administradorea", "Storage" => "Biltegiratzea", "Default" => "Lehenetsia", diff --git a/settings/l10n/fa.php b/settings/l10n/fa.php index 44872e28f05..59865c697cb 100644 --- a/settings/l10n/fa.php +++ b/settings/l10n/fa.php @@ -25,7 +25,6 @@ "Fill in an email address to enable password recovery" => "پست الکترونیکی را پرکنید تا بازیابی گذرواژه ÙØ¹Ø§Ù„ شود", "Language" => "زبان", "Help translate" => "به ترجمه آن Ú©Ù…Ú© کنید", -"Name" => "نام", "Groups" => "گروه ها", "Create" => "ایجاد کردن", "Other" => "سایر", diff --git a/settings/l10n/fi_FI.php b/settings/l10n/fi_FI.php index dbab88b97a0..f8a19ae0f9c 100644 --- a/settings/l10n/fi_FI.php +++ b/settings/l10n/fi_FI.php @@ -49,11 +49,12 @@ "Use this address to connect to your ownCloud in your file manager" => "Käytä tätä osoitetta yhdistäessäsi ownCloudiisi tiedostonhallintaa käyttäen", "Version" => "Versio", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Kehityksestä on vastannut <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud-yhteisö</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">lähdekoodi</a> on julkaistu lisenssin <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> alaisena.", -"Name" => "Nimi", +"Login Name" => "Kirjautumisnimi", "Groups" => "Ryhmät", "Create" => "Luo", "Unlimited" => "Rajoittamaton", "Other" => "Muu", +"Display Name" => "Näyttönimi", "Group Admin" => "Ryhmän ylläpitäjä", "Default" => "Oletus", "Delete" => "Poista" diff --git a/settings/l10n/fr.php b/settings/l10n/fr.php index 03a61c69cf8..5b9495b566d 100644 --- a/settings/l10n/fr.php +++ b/settings/l10n/fr.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "Utiliser cette adresse pour vous connecter à ownCloud dans votre gestionnaire de fichiers", "Version" => "Version", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Développé par la <a href=\"http://ownCloud.org/contact\" target=\"_blank\">communauté ownCloud</a>, le <a href=\"https://github.com/owncloud\" target=\"_blank\">code source</a> est publié sous license <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Nom", "Groups" => "Groupes", "Create" => "Créer", "Default Storage" => "Support de stockage par défaut", diff --git a/settings/l10n/gl.php b/settings/l10n/gl.php index ddd5661fe72..d3359f19513 100644 --- a/settings/l10n/gl.php +++ b/settings/l10n/gl.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "Utilice este enderezo para conectarse ao seu ownCloud co administrador de ficheiros", "Version" => "Versión", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Desenvolvido pola <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunidade ownCloud</a>, o <a href=\"https://github.com/owncloud\" target=\"_blank\">código fonte</a> está baixo a licenza <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Nome", "Groups" => "Grupos", "Create" => "Crear", "Default Storage" => "Almacenamento predeterminado", diff --git a/settings/l10n/he.php b/settings/l10n/he.php index bbfe437ba30..b7e76fbaeda 100644 --- a/settings/l10n/he.php +++ b/settings/l10n/he.php @@ -47,7 +47,6 @@ "Use this address to connect to your ownCloud in your file manager" => "השתמש בכתובת ×–×ת על ×ž× ×ª להתחבר ×ל ownCloud דרך סייר קבצי×.", "Version" => "גרס×", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "פותח על די <a href=\"http://ownCloud.org/contact\" target=\"_blank\">קהילתownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">קוד המקור</a> מוגן ברישיון <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "ש×", "Groups" => "קבוצות", "Create" => "יצירה", "Other" => "×חר", diff --git a/settings/l10n/hr.php b/settings/l10n/hr.php index 14053cb98a4..010303eb44f 100644 --- a/settings/l10n/hr.php +++ b/settings/l10n/hr.php @@ -24,7 +24,6 @@ "Fill in an email address to enable password recovery" => "Ispunite vase e-mail adresa kako bi se omogućilo oporavak lozinke", "Language" => "Jezik", "Help translate" => "Pomoć prevesti", -"Name" => "Ime", "Groups" => "Grupe", "Create" => "Izradi", "Other" => "ostali", diff --git a/settings/l10n/hu_HU.php b/settings/l10n/hu_HU.php index 35c59bdb2d6..2e096099360 100644 --- a/settings/l10n/hu_HU.php +++ b/settings/l10n/hu_HU.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "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.", "Version" => "Verzió", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "A programot az <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud közösség</a> fejleszti. A <a href=\"https://github.com/owncloud\" target=\"_blank\">forráskód</a> az <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> feltételei mellett használható föl.", -"Name" => "Név", "Groups" => "Csoportok", "Create" => "Létrehozás", "Default Storage" => "Alapértelmezett tárhely", diff --git a/settings/l10n/ia.php b/settings/l10n/ia.php index 18428709098..121a1175e79 100644 --- a/settings/l10n/ia.php +++ b/settings/l10n/ia.php @@ -15,7 +15,6 @@ "Your email address" => "Tu adresse de e-posta", "Language" => "Linguage", "Help translate" => "Adjuta a traducer", -"Name" => "Nomine", "Groups" => "Gruppos", "Create" => "Crear", "Other" => "Altere", diff --git a/settings/l10n/id.php b/settings/l10n/id.php index 132920a7a04..0f04563fa3e 100644 --- a/settings/l10n/id.php +++ b/settings/l10n/id.php @@ -23,7 +23,6 @@ "Fill in an email address to enable password recovery" => "Masukkan alamat email untuk mengaktifkan pemulihan password", "Language" => "Bahasa", "Help translate" => "Bantu menerjemahkan", -"Name" => "Nama", "Groups" => "Group", "Create" => "Buat", "Other" => "Lain-lain", diff --git a/settings/l10n/is.php b/settings/l10n/is.php index d978957ab48..58730575343 100644 --- a/settings/l10n/is.php +++ b/settings/l10n/is.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "Notaðu þessa vefslóð til að tengjast ownCloud svæðinu þÃnu", "Version" => "Útgáfa", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Þróað af <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud samfélaginu</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">forrita kóðinn</a> er skráðu með <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Nafn", "Groups" => "Hópar", "Create" => "Búa til", "Default Storage" => "Sjálfgefin gagnageymsla", diff --git a/settings/l10n/it.php b/settings/l10n/it.php index 4980d585441..c8d8f16acea 100644 --- a/settings/l10n/it.php +++ b/settings/l10n/it.php @@ -49,14 +49,17 @@ "Use this address to connect to your ownCloud in your file manager" => "Usa questo indirizzo per connetterti al tuo ownCloud dal tuo gestore file", "Version" => "Versione", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Sviluppato dalla <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunità di ownCloud</a>, il <a href=\"https://github.com/owncloud\" target=\"_blank\">codice sorgente</a> è licenziato nei termini della <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Nome", +"Login Name" => "Nome utente", "Groups" => "Gruppi", "Create" => "Crea", "Default Storage" => "Archiviazione predefinita", "Unlimited" => "Illimitata", "Other" => "Altro", +"Display Name" => "Nome visualizzato", "Group Admin" => "Gruppi amministrati", "Storage" => "Archiviazione", +"change display name" => "cambia il nome visualizzato", +"set new password" => "imposta una nuova password", "Default" => "Predefinito", "Delete" => "Elimina" ); diff --git a/settings/l10n/ja_JP.php b/settings/l10n/ja_JP.php index a660d21c780..dbf8d7d13e8 100644 --- a/settings/l10n/ja_JP.php +++ b/settings/l10n/ja_JP.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "ファイルマãƒãƒ¼ã‚¸ãƒ£ã§ownCloudã«æŽ¥ç¶šã™ã‚‹éš›ã¯ã“ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’利用ã—ã¦ãã ã•ã„", "Version" => "ãƒãƒ¼ã‚¸ãƒ§ãƒ³", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "<a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>ã«ã‚ˆã‚Šé–‹ç™ºã•れã¦ã„ã¾ã™ã€<a href=\"https://github.com/owncloud\" target=\"_blank\">ソースコード</a>ライセンスã¯ã€<a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> ライセンスã«ã‚ˆã‚Šæä¾›ã•れã¦ã„ã¾ã™ã€‚", -"Name" => "åå‰", "Groups" => "グループ", "Create" => "作æˆ", "Default Storage" => "デフォルトストレージ", diff --git a/settings/l10n/ka_GE.php b/settings/l10n/ka_GE.php index 68dbc736dcd..2bc2e7d5de7 100644 --- a/settings/l10n/ka_GE.php +++ b/settings/l10n/ka_GE.php @@ -34,7 +34,6 @@ "Fill in an email address to enable password recovery" => "შეáƒáƒ•სეთ იმეილ მისáƒáƒ›áƒáƒ თის ველი პáƒáƒ áƒáƒšáƒ˜áƒ¡ áƒáƒ¦áƒ¡áƒáƒ“გენáƒáƒ“", "Language" => "ენáƒ", "Help translate" => "თáƒáƒ გმნის დáƒáƒ®áƒ›áƒáƒ ებáƒ", -"Name" => "სáƒáƒ®áƒ”ლი", "Groups" => "ჯგუფი", "Create" => "შექმნáƒ", "Other" => "სხვáƒ", diff --git a/settings/l10n/ko.php b/settings/l10n/ko.php index 4a7817b8401..3601d77c9fe 100644 --- a/settings/l10n/ko.php +++ b/settings/l10n/ko.php @@ -21,16 +21,16 @@ "More Apps" => "ë” ë§Žì€ ì•±", "Select an App" => "앱 ì„ íƒ", "See application page at apps.owncloud.com" => "apps.owncloud.comì— ìžˆëŠ” 앱 페ì´ì§€ë¥¼ ì°¸ê³ í•˜ì‹ì‹œì˜¤", -"<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" => "<span class=\"licence\"></span>-ë¼ì´ì„ 스 ë³´ìœ ìž <span class=\"author\"></span>", -"User Documentation" => "ìœ ì € 문서", +"<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" => "<span class=\"licence\"></span>-ë¼ì´ì„ 스ë¨: <span class=\"author\"></span>", +"User Documentation" => "ì‚¬ìš©ìž ë¬¸ì„œ", "Administrator Documentation" => "ê´€ë¦¬ìž ë¬¸ì„œ", "Online Documentation" => "온ë¼ì¸ 문서", "Forum" => "í¬ëŸ¼", -"Bugtracker" => "버그트래커", +"Bugtracker" => "버그 트래커", "Commercial Support" => "ìƒì—…ìš© ì§€ì›", "You have used <strong>%s</strong> of the available <strong>%s</strong>" => "현재 공간 <strong>%s</strong>/<strong>%s</strong>ì„(를) 사용 중입니다", -"Clients" => "ê³ ê°", -"Download Desktop Clients" => "ë°ìФí¬íƒ‘ í´ë¼ì´ì–¸íЏ 다운로드", +"Clients" => "í´ë¼ì´ì–¸íЏ", +"Download Desktop Clients" => "ë°ìФí¬í†± í´ë¼ì´ì–¸íЏ 다운로드", "Download Android Client" => "안드로ì´ë“œ í´ë¼ì´ì–¸íЏ 다운로드", "Download iOS Client" => "iOS í´ë¼ì´ì–¸íЏ 다운로드", "Password" => "암호", @@ -46,17 +46,20 @@ "Language" => "언어", "Help translate" => "ë²ˆì— ë•기", "WebDAV" => "WebDAV", -"Use this address to connect to your ownCloud in your file manager" => "íŒŒì¼ ë§¤ë‹ˆì €ì—서 사용ìžì˜ ownCloudì— ì ‘ì†í•˜ê¸° 위해 ì´ ì£¼ì†Œë¥¼ 사용하ì‹ì‹œìš”.", -"Version" => "ë²„ì ¼", +"Use this address to connect to your ownCloud in your file manager" => "íŒŒì¼ ê´€ë¦¬ìžì—서 ownCloudì— ì ‘ì†í•˜ë ¤ë©´ ì´ ì£¼ì†Œë¥¼ 사용하ì‹ì‹œì˜¤.", +"Version" => "ë²„ì „", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "<a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud 커뮤니티</a>ì— ì˜í•´ì„œ 개발ë˜ì—ˆìŠµë‹ˆë‹¤. <a href=\"https://github.com/owncloud\" target=\"_blank\">ì›ë³¸ 코드</a>는 <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>ì— ë”°ë¼ ì‚¬ìš©ì´ í—ˆê°€ë©ë‹ˆë‹¤.", -"Name" => "ì´ë¦„", +"Login Name" => "ë¡œê·¸ì¸ ì´ë¦„", "Groups" => "그룹", "Create" => "만들기", "Default Storage" => "기본 ì €ìž¥ì†Œ", "Unlimited" => "ë¬´ì œí•œ", "Other" => "기타", +"Display Name" => "표시 ì´ë¦„", "Group Admin" => "그룹 관리ìž", "Storage" => "ì €ìž¥ì†Œ", +"change display name" => "표시 ì´ë¦„ 변경", +"set new password" => "새 암호 ì„¤ì •", "Default" => "기본값", "Delete" => "ì‚ì œ" ); diff --git a/settings/l10n/ku_IQ.php b/settings/l10n/ku_IQ.php index 6a4996e8252..ef9e806e595 100644 --- a/settings/l10n/ku_IQ.php +++ b/settings/l10n/ku_IQ.php @@ -3,6 +3,5 @@ "Saving..." => "پاشکه‌وتده‌کات...", "Password" => "وشەی تێپەربو", "New password" => "وشەی نهێنی نوێ", -"Email" => "ئیمه‌یل", -"Name" => "ناو" +"Email" => "ئیمه‌یل" ); diff --git a/settings/l10n/lb.php b/settings/l10n/lb.php index 1f9ea35e885..04acf53de43 100644 --- a/settings/l10n/lb.php +++ b/settings/l10n/lb.php @@ -24,7 +24,6 @@ "Fill in an email address to enable password recovery" => "Gëff eng Email Adress an fir d'Passwuert recovery ze erlaben", "Language" => "Sprooch", "Help translate" => "Hëllef iwwersetzen", -"Name" => "Numm", "Groups" => "Gruppen", "Create" => "Erstellen", "Other" => "Aner", diff --git a/settings/l10n/lt_LT.php b/settings/l10n/lt_LT.php index 73af4f3b27b..e8c1577c7fb 100644 --- a/settings/l10n/lt_LT.php +++ b/settings/l10n/lt_LT.php @@ -27,7 +27,6 @@ "Fill in an email address to enable password recovery" => "PamirÅ¡to slaptažodžio atkÅ«rimui įveskite savo el. paÅ¡to adresÄ…", "Language" => "Kalba", "Help translate" => "PadÄ—kite iÅ¡versti", -"Name" => "Vardas", "Groups" => "GrupÄ—s", "Create" => "Sukurti", "Other" => "Kita", diff --git a/settings/l10n/lv.php b/settings/l10n/lv.php index ba44fdbb3e2..4cafe3ab71d 100644 --- a/settings/l10n/lv.php +++ b/settings/l10n/lv.php @@ -22,6 +22,7 @@ "See application page at apps.owncloud.com" => "Apskatie aplikÄciju lapu - apps.owncloud.com", "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" => "<span class=\"licence\"></span>-licencÄ“ts no <span class=\"author\"></span>", "You have used <strong>%s</strong> of the available <strong>%s</strong>" => "JÅ«s lietojat <strong>%s</strong> no pieejamajiem <strong>%s</strong>", +"Clients" => "Klienti", "Password" => "Parole", "Your password was changed" => "JÅ«ru parole tika nomainÄ«ta", "Unable to change your password" => "Nav iespÄ“jams nomainÄ«t jÅ«su paroli", @@ -35,7 +36,6 @@ "Language" => "Valoda", "Help translate" => "PalÄ«dzi tulkot", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "IzstrÄdÄjusi<a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud kopiena</a>,<a href=\"https://github.com/owncloud\" target=\"_blank\">pirmkodu</a>kurÅ¡ ir licencÄ“ts zem <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "VÄrds", "Groups" => "Grupas", "Create" => "Izveidot", "Other" => "Cits", diff --git a/settings/l10n/mk.php b/settings/l10n/mk.php index 52fafc56479..b041d41923a 100644 --- a/settings/l10n/mk.php +++ b/settings/l10n/mk.php @@ -48,7 +48,6 @@ "Use this address to connect to your ownCloud in your file manager" => "КориÑтете ја оваа адреÑа да ", "Version" => "Верзија", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Развој од <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud заедницата</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">изворниот код</a> е лиценциран Ñо<a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Име", "Groups" => "Групи", "Create" => "Создај", "Other" => "ОÑтанато", diff --git a/settings/l10n/ms_MY.php b/settings/l10n/ms_MY.php index 87f45d3c9a0..e2537679a69 100644 --- a/settings/l10n/ms_MY.php +++ b/settings/l10n/ms_MY.php @@ -23,7 +23,6 @@ "Fill in an email address to enable password recovery" => "Isi alamat emel anda untuk membolehkan pemulihan kata laluan", "Language" => "Bahasa", "Help translate" => "Bantu terjemah", -"Name" => "Nama", "Groups" => "Kumpulan", "Create" => "Buat", "Other" => "Lain", diff --git a/settings/l10n/nb_NO.php b/settings/l10n/nb_NO.php index 52cfc92040b..ecd1466e7ee 100644 --- a/settings/l10n/nb_NO.php +++ b/settings/l10n/nb_NO.php @@ -42,7 +42,6 @@ "Help translate" => "Bidra til oversettelsen", "WebDAV" => "WebDAV", "Version" => "Versjon", -"Name" => "Navn", "Groups" => "Grupper", "Create" => "Opprett", "Other" => "Annet", diff --git a/settings/l10n/nl.php b/settings/l10n/nl.php index 2b6fdbd6082..af76f376683 100644 --- a/settings/l10n/nl.php +++ b/settings/l10n/nl.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "Gebruik dit adres om te verbinden met uw ownCloud in uw bestandsbeheer", "Version" => "Versie", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Ontwikkeld door de <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud gemeenschap</a>, de <a href=\"https://github.com/owncloud\" target=\"_blank\">bron code</a> is gelicenseerd onder de <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Naam", "Groups" => "Groepen", "Create" => "Creëer", "Default Storage" => "Default opslag", diff --git a/settings/l10n/nn_NO.php b/settings/l10n/nn_NO.php index 923f5481d5a..778e7afc265 100644 --- a/settings/l10n/nn_NO.php +++ b/settings/l10n/nn_NO.php @@ -21,7 +21,6 @@ "Fill in an email address to enable password recovery" => "Fyll inn din e-post addresse for og kunne motta passord tilbakestilling", "Language" => "SprÃ¥k", "Help translate" => "Hjelp oss Ã¥ oversett", -"Name" => "Namn", "Groups" => "Grupper", "Create" => "Lag", "Other" => "Anna", diff --git a/settings/l10n/oc.php b/settings/l10n/oc.php index 39445570fdb..e8ed2d52758 100644 --- a/settings/l10n/oc.php +++ b/settings/l10n/oc.php @@ -33,7 +33,6 @@ "Fill in an email address to enable password recovery" => "Emplena una adreiça de corrièl per permetre lo mandadÃs del senhal perdut", "Language" => "Lenga", "Help translate" => "Ajuda a la revirada", -"Name" => "Nom", "Groups" => "Grops", "Create" => "Crea", "Other" => "Autres", diff --git a/settings/l10n/pl.php b/settings/l10n/pl.php index ae4d335c72b..656636b258e 100644 --- a/settings/l10n/pl.php +++ b/settings/l10n/pl.php @@ -49,7 +49,6 @@ "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 <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Stworzone przez <a href=\"http://ownCloud.org/contact\" target=\"_blank\"> spoÅ‚eczność ownCloud</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">kod źródÅ‚owy</a> na licencji <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Nazwa", "Groups" => "Grupy", "Create" => "Utwórz", "Default Storage" => "DomyÅ›lny magazyn", diff --git a/settings/l10n/pt_BR.php b/settings/l10n/pt_BR.php index ebb9b72b19a..e3146a33c5b 100644 --- a/settings/l10n/pt_BR.php +++ b/settings/l10n/pt_BR.php @@ -1,29 +1,37 @@ <?php $TRANSLATIONS = array( -"Unable to load list from App Store" => "Não foi possivel carregar lista da App Store", +"Unable to load list from App Store" => "Não foi possÃvel carregar lista da App Store", "Group already exists" => "Grupo já existe", -"Unable to add group" => "Não foi possivel adicionar grupo", -"Could not enable app. " => "Não pôde habilitar aplicação", -"Email saved" => "Email gravado", -"Invalid email" => "Email inválido", -"Unable to delete group" => "Não foi possivel remover grupo", -"Authentication error" => "erro de autenticação", -"Unable to delete user" => "Não foi possivel remover usuário", -"Language changed" => "Mudou Idioma", +"Unable to add group" => "Não foi possÃvel adicionar grupo", +"Could not enable app. " => "Não foi possÃvel habilitar aplicativo.", +"Email saved" => "E-mail guardado", +"Invalid email" => "E-mail inválido", +"Unable to delete group" => "Não foi possÃvel remover grupo", +"Authentication error" => "Erro de autenticação", +"Unable to delete user" => "Não foi possÃvel remover usuário", +"Language changed" => "Idioma alterado", "Invalid request" => "Pedido inválido", "Admins can't remove themself from the admin group" => "Admins não podem se remover do grupo admin", -"Unable to add user to group %s" => "Não foi possivel adicionar usuário ao grupo %s", -"Unable to remove user from group %s" => "Não foi possivel remover usuário ao grupo %s", -"Disable" => "Desabilitado", -"Enable" => "Habilitado", -"Saving..." => "Gravando...", -"__language_name__" => "Português do Brasil", +"Unable to add user to group %s" => "Não foi possÃvel adicionar usuário ao grupo %s", +"Unable to remove user from group %s" => "Não foi possÃvel remover usuário do grupo %s", +"Disable" => "Desabilitar", +"Enable" => "Habilitar", +"Saving..." => "Guardando...", +"__language_name__" => "Português (Brasil)", "Add your App" => "Adicione seu Aplicativo", "More Apps" => "Mais Apps", -"Select an App" => "Selecione uma Aplicação", +"Select an App" => "Selecione um Aplicativo", "See application page at apps.owncloud.com" => "Ver página do aplicativo em apps.owncloud.com", "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" => "<span class=\"licence\"></span>-licenciado por <span class=\"author\"></span>", +"User Documentation" => "Documentação de Usuário", +"Administrator Documentation" => "Documentação de Administrador", +"Online Documentation" => "Documentação Online", +"Forum" => "Fórum", +"Commercial Support" => "Suporte Comercial", "You have used <strong>%s</strong> of the available <strong>%s</strong>" => "Você usou <strong>%s</strong> do seu espaço de <strong>%s</strong>", "Clients" => "Clientes", +"Download Desktop Clients" => "Baixar Clientes Desktop", +"Download Android Client" => "Baixar Cliente Android", +"Download iOS Client" => "Baixar Cliente iOS", "Password" => "Senha", "Your password was changed" => "Sua senha foi alterada", "Unable to change your password" => "Não é possivel alterar a sua senha", @@ -31,16 +39,24 @@ "New password" => "Nova senha", "show" => "mostrar", "Change password" => "Alterar senha", -"Email" => "Email", -"Your email address" => "Seu endereço de email", -"Fill in an email address to enable password recovery" => "Preencha um endereço de email para habilitar a recuperação de senha", +"Email" => "E-mail", +"Your email address" => "Seu endereço de e-mail", +"Fill in an email address to enable password recovery" => "Preencha um endereço de e-mail para habilitar a recuperação de senha", "Language" => "Idioma", "Help translate" => "Ajude a traduzir", +"WebDAV" => "WebDAV", +"Use this address to connect to your ownCloud in your file manager" => "Usar este endereço para conectar-se ao seu ownCloud no seu gerenciador de arquivos", +"Version" => "Versão", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Desenvolvido pela <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunidade ownCloud</a>, o <a href=\"https://github.com/owncloud\" target=\"_blank\">código fonte</a> está licenciado sob <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Nome", +"Login Name" => "Nome de Login", "Groups" => "Grupos", "Create" => "Criar", +"Default Storage" => "Armazenamento Padrão", +"Unlimited" => "Ilimitado", "Other" => "Outro", +"Display Name" => "Nome de Exibição", "Group Admin" => "Grupo Administrativo", +"Storage" => "Armazenamento", +"Default" => "Padrão", "Delete" => "Apagar" ); diff --git a/settings/l10n/pt_PT.php b/settings/l10n/pt_PT.php index 6bccb49d649..24bf8c75e5e 100644 --- a/settings/l10n/pt_PT.php +++ b/settings/l10n/pt_PT.php @@ -49,14 +49,17 @@ "Use this address to connect to your ownCloud in your file manager" => "Use este endereço no seu gestor de ficheiros para ligar à sua ownCloud", "Version" => "Versão", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Desenvolvido pela <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunidade ownCloud</a>, o<a href=\"https://github.com/owncloud\" target=\"_blank\">código fonte</a> está licenciado sob a <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Nome", +"Login Name" => "Nome de utilizador", "Groups" => "Grupos", "Create" => "Criar", "Default Storage" => "Armazenamento Padrão", "Unlimited" => "Ilimitado", "Other" => "Outro", +"Display Name" => "Nome público", "Group Admin" => "Grupo Administrador", "Storage" => "Armazenamento", +"change display name" => "modificar nome exibido", +"set new password" => "definir nova palavra-passe", "Default" => "Padrão", "Delete" => "Apagar" ); diff --git a/settings/l10n/ro.php b/settings/l10n/ro.php index a96a7368499..17a091c569c 100644 --- a/settings/l10n/ro.php +++ b/settings/l10n/ro.php @@ -10,6 +10,7 @@ "Unable to delete user" => "Nu s-a putut È™terge utilizatorul", "Language changed" => "Limba a fost schimbată", "Invalid request" => "Cerere eronată", +"Admins can't remove themself from the admin group" => "Administratorii nu se pot È™terge singuri din grupul admin", "Unable to add user to group %s" => "Nu s-a putut adăuga utilizatorul la grupul %s", "Unable to remove user from group %s" => "Nu s-a putut elimina utilizatorul din grupul %s", "Disable" => "DezactivaÈ›i", @@ -27,6 +28,7 @@ "Forum" => "Forum", "Bugtracker" => "Urmărire bug-uri", "Commercial Support" => "Suport comercial", +"You have used <strong>%s</strong> of the available <strong>%s</strong>" => "AÈ›i utilizat <strong>%s</strong> din <strong>%s</strong> disponibile", "Clients" => "ClienÈ›i", "Download Desktop Clients" => "Descarcă client desktop", "Download Android Client" => "Descarcă client Android", @@ -44,9 +46,9 @@ "Language" => "Limba", "Help translate" => "Ajută la traducere", "WebDAV" => "WebDAV", +"Use this address to connect to your ownCloud in your file manager" => "FoloseÈ™te această adresă pentru a conecta ownCloud cu managerul de fiÈ™iere", "Version" => "Versiunea", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Dezvoltat de the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunitatea ownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">codul sursă</a> este licenÈ›iat sub <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Nume", "Groups" => "Grupuri", "Create" => "Crează", "Default Storage" => "Stocare implicită", diff --git a/settings/l10n/ru.php b/settings/l10n/ru.php index 5c05f32636a..2194c886f1d 100644 --- a/settings/l10n/ru.php +++ b/settings/l10n/ru.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "ИÑпользуйте Ñтот URL Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ð³Ð¾ менеджера к Вашему хранилищу", "Version" => "ВерÑиÑ", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "РазрабатываетÑÑ <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ÑообщеÑтвом ownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">иÑходный код</a> доÑтупен под лицензией <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "ИмÑ", "Groups" => "Группы", "Create" => "Создать", "Default Storage" => "Хранилище по-умолчанию", diff --git a/settings/l10n/ru_RU.php b/settings/l10n/ru_RU.php index 26179eeb329..642b31ada7b 100644 --- a/settings/l10n/ru_RU.php +++ b/settings/l10n/ru_RU.php @@ -30,6 +30,7 @@ "Commercial Support" => "КоммерчеÑÐºÐ°Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ°", "You have used <strong>%s</strong> of the available <strong>%s</strong>" => "Ð’Ñ‹ иÑпользовали <strong>%s</strong> из возможных <strong>%s</strong>", "Clients" => "Клиенты", +"Download Desktop Clients" => "Загрузка деÑктопных клиентов", "Download Android Client" => "Загрузить клиент под Android ", "Download iOS Client" => "Загрузить клиент под iOS ", "Password" => "Пароль", @@ -48,10 +49,14 @@ "Use this address to connect to your ownCloud in your file manager" => "ИÑпользуйте Ñтот Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº ownCloud в Вашем файловом менеджере", "Version" => "ВерÑиÑ", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Разработанный <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "ИмÑ", "Groups" => "Группы", "Create" => "Создать", +"Default Storage" => "Хранилище по умолчанию", +"Unlimited" => "Ðеограниченный", "Other" => "Другой", "Group Admin" => "Группа Admin", +"Storage" => "Хранилище", +"set new password" => "назначить новый пароль", +"Default" => "По умолчанию", "Delete" => "Удалить" ); diff --git a/settings/l10n/si_LK.php b/settings/l10n/si_LK.php index 45cb9a4a4fb..8d7bc7adf5a 100644 --- a/settings/l10n/si_LK.php +++ b/settings/l10n/si_LK.php @@ -31,7 +31,6 @@ "Language" => "à¶·à·à·‚à·à·€", "Help translate" => "පරිවර්ථන සහය", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "නිපදන ලද්දේ <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud සමà·à¶¢à¶ºà·™à¶±à·Š</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">මුල් à¶šà·šà¶à¶º </a>ලයිසන්ස් à¶šà¶» ඇà¶à·Šà¶à·š <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> යටà¶à·š.", -"Name" => "à¶±à·à¶¸à¶º", "Groups" => "සමූහය", "Create" => "à¶à¶±à¶±à·Šà¶±", "Other" => "වෙනà¶à·Š", diff --git a/settings/l10n/sk_SK.php b/settings/l10n/sk_SK.php index ecf1a905008..6f93d0db0b4 100644 --- a/settings/l10n/sk_SK.php +++ b/settings/l10n/sk_SK.php @@ -22,8 +22,17 @@ "Select an App" => "Vyberte aplikáciu", "See application page at apps.owncloud.com" => "Pozrite si stránku aplikácià na apps.owncloud.com", "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" => "<span class=\"licence\"></span>-licencované <span class=\"author\"></span>", +"User Documentation" => "PrÃruÄka použÃvateľa", +"Administrator Documentation" => "PrÃruÄka správcu", +"Online Documentation" => "Online prÃruÄka", +"Forum" => "Fórum", +"Bugtracker" => "Bugtracker", +"Commercial Support" => "KomerÄná podpora", "You have used <strong>%s</strong> of the available <strong>%s</strong>" => "Použili ste <strong>%s</strong> z <strong>%s</strong> dostupných ", "Clients" => "Klienti", +"Download Desktop Clients" => "StiahnuÅ¥ desktopového klienta", +"Download Android Client" => "StiahnuÅ¥ Android klienta", +"Download iOS Client" => "StiahnuÅ¥ iOS klienta", "Password" => "Heslo", "Your password was changed" => "Heslo bolo zmenené", "Unable to change your password" => "Nie je možné zmeniÅ¥ vaÅ¡e heslo", @@ -36,11 +45,19 @@ "Fill in an email address to enable password recovery" => "Vyplňte emailovú adresu pre aktivovanie obnovy hesla", "Language" => "Jazyk", "Help translate" => "PomôcÅ¥ s prekladom", +"WebDAV" => "WebDAV", +"Use this address to connect to your ownCloud in your file manager" => "Použite túto adresu pre pripojenie vášho ownCloud k súborovému správcovi", +"Version" => "Verzia", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Vyvinuté <a href=\"http://ownCloud.org/contact\" target=\"_blank\">komunitou ownCloud</a>,<a href=\"https://github.com/owncloud\" target=\"_blank\">zdrojový kód</a> je licencovaný pod <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Meno", +"Login Name" => "Prihlasovacie meno", "Groups" => "Skupiny", "Create" => "VytvoriÅ¥", +"Default Storage" => "Predvolené úložisko", +"Unlimited" => "Nelimitované", "Other" => "Iné", +"Display Name" => "Zobrazované meno", "Group Admin" => "Správca skupiny", +"Storage" => "Úložisko", +"Default" => "Predvolené", "Delete" => "OdstrániÅ¥" ); diff --git a/settings/l10n/sl.php b/settings/l10n/sl.php index 24bea147993..98d34518478 100644 --- a/settings/l10n/sl.php +++ b/settings/l10n/sl.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "Uporabite ta naslov za povezavo do ownCloud v vaÅ¡em upravljalniku datotek.", "Version" => "RazliÄica", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Programski paket razvija <a href=\"http://ownCloud.org/contact\" target=\"_blank\">skupnost ownCloud</a>. <a href=\"https://github.com/owncloud\" target=\"_blank\">Izvorna koda</a> je objavljena pod pogoji dovoljenja <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"SploÅ¡no javno dovoljenje Affero\">AGPL</abbr></a>.", -"Name" => "Ime", "Groups" => "Skupine", "Create" => "Ustvari", "Default Storage" => "Privzeta shramba", diff --git a/settings/l10n/sr.php b/settings/l10n/sr.php index d230adb9275..9f0d428c2e1 100644 --- a/settings/l10n/sr.php +++ b/settings/l10n/sr.php @@ -37,7 +37,6 @@ "Language" => "Језик", "Help translate" => " Помозите у превођењу", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Развијају <a href=\"http://ownCloud.org/contact\" target=\"_blank\">Оунклауд (ownCloud) заједница</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">изворни код</a> је издат под <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Ðферо Јавном Лиценцом (Affero General Public License)\">ÐГПЛ лиценцом</abbr></a>.", -"Name" => "Име", "Groups" => "Групе", "Create" => "Ðаправи", "Other" => "Друго", diff --git a/settings/l10n/sr@latin.php b/settings/l10n/sr@latin.php index 7677fbcf33c..942594eb028 100644 --- a/settings/l10n/sr@latin.php +++ b/settings/l10n/sr@latin.php @@ -12,7 +12,6 @@ "Change password" => "Izmeni lozinku", "Email" => "E-mail", "Language" => "Jezik", -"Name" => "Ime", "Groups" => "Grupe", "Create" => "Napravi", "Other" => "Drugo", diff --git a/settings/l10n/sv.php b/settings/l10n/sv.php index e99fad96172..29d11d8574e 100644 --- a/settings/l10n/sv.php +++ b/settings/l10n/sv.php @@ -49,14 +49,17 @@ "Use this address to connect to your ownCloud in your file manager" => "Använd denna adress för att ansluta till ownCloud i din filhanterare", "Version" => "Version", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Utvecklad av <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud kommunity</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">källkoden</a> är licenserad under <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Namn", +"Login Name" => "Inloggningsnamn", "Groups" => "Grupper", "Create" => "Skapa", "Default Storage" => "Förvald lagring", "Unlimited" => "Obegränsad", "Other" => "Annat", +"Display Name" => "Visat namn", "Group Admin" => "Gruppadministratör", "Storage" => "Lagring", +"change display name" => "ändra visat namn", +"set new password" => "ange nytt lösenord", "Default" => "Förvald", "Delete" => "Radera" ); diff --git a/settings/l10n/ta_LK.php b/settings/l10n/ta_LK.php index 9771e167e4b..84f6026ca32 100644 --- a/settings/l10n/ta_LK.php +++ b/settings/l10n/ta_LK.php @@ -36,7 +36,6 @@ "Language" => "மொழி", "Help translate" => "மொழிபெயரà¯à®•à¯à®• உதவி", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "பெயரà¯", "Groups" => "கà¯à®´à¯à®•à¯à®•ளà¯", "Create" => "உரà¯à®µà®¾à®•à¯à®•à¯à®•", "Other" => "மறà¯à®±à®µà¯ˆ", diff --git a/settings/l10n/th_TH.php b/settings/l10n/th_TH.php index c0c606662e5..3ef68cf7fe4 100644 --- a/settings/l10n/th_TH.php +++ b/settings/l10n/th_TH.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "ใช้ที่à¸à¸¢à¸¹à¹ˆà¸™à¸µà¹‰à¹€à¸žà¸·à¹ˆà¸à¹€à¸Šà¸·à¹ˆà¸à¸¡à¸•่à¸à¸à¸±à¸š ownCloud ในโปรà¹à¸à¸£à¸¡à¸ˆà¸±à¸”à¸à¸²à¸£à¹„ฟล์ขà¸à¸‡à¸„ุณ", "Version" => "รุ่น", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "พัฒนาโดย the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ชุมชนผู้ใช้งาน ownCloud</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">ซà¸à¸£à¹Œà¸ªà¹‚ค้ด</a>à¸à¸¢à¸¹à¹ˆà¸ ายใต้สัà¸à¸à¸²à¸à¸™à¸¸à¸à¸²à¸•ขà¸à¸‡ <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "ชื่à¸", "Groups" => "à¸à¸¥à¸¸à¹ˆà¸¡", "Create" => "สร้าง", "Default Storage" => "พื้นที่จำà¸à¸±à¸”ข้à¸à¸¡à¸¹à¸¥à¹€à¸£à¸´à¹ˆà¸¡à¸•้น", diff --git a/settings/l10n/tr.php b/settings/l10n/tr.php index f754bb90fcf..281e01e1162 100644 --- a/settings/l10n/tr.php +++ b/settings/l10n/tr.php @@ -44,7 +44,6 @@ "WebDAV" => "WebDAV", "Version" => "Sürüm", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "GeliÅŸtirilen Taraf<a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is altında lisanslanmıştır <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Ad", "Groups" => "Gruplar", "Create" => "OluÅŸtur", "Other" => "DiÄŸer", diff --git a/settings/l10n/uk.php b/settings/l10n/uk.php index 19b84edfc78..dc2c537b4fb 100644 --- a/settings/l10n/uk.php +++ b/settings/l10n/uk.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "ВикориÑтовуйте цю адреÑу Ð´Ð»Ñ Ð¿Ñ–Ð´'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð´Ð¾ вашого ownCloud у вашому файловому менеджері", "Version" => "ВерÑÑ–Ñ", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Розроблено <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud громадою</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">вихідний код</a> має ліцензію <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Ім'Ñ", "Groups" => "Групи", "Create" => "Створити", "Default Storage" => "Ñховище за замовчуваннÑм", diff --git a/settings/l10n/vi.php b/settings/l10n/vi.php index 2354ba2a16e..39b09aa9382 100644 --- a/settings/l10n/vi.php +++ b/settings/l10n/vi.php @@ -37,7 +37,6 @@ "Language" => "Ngôn ngữ", "Help translate" => "Há»— trợ dịch thuáºt", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "ÄÆ°á»£c phát triển bởi <a href=\"http://ownCloud.org/contact\" target=\"_blank\">cá»™ng đồng ownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">mã nguồn </a> đã được cấp phép theo chuẩn <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", -"Name" => "Tên", "Groups" => "Nhóm", "Create" => "Tạo", "Other" => "Khác", diff --git a/settings/l10n/zh_CN.GB2312.php b/settings/l10n/zh_CN.GB2312.php index b34b20d5aed..f8e37ac749f 100644 --- a/settings/l10n/zh_CN.GB2312.php +++ b/settings/l10n/zh_CN.GB2312.php @@ -35,7 +35,6 @@ "Language" => "è¯è¨€", "Help translate" => "帮助翻译", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "ç”± <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud 社区</a>å¼€å‘,<a href=\"https://github.com/owncloud\" target=\"_blank\">sæºä»£ç </a> 以 <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a> 许å¯åè®®å‘布。", -"Name" => "åå—", "Groups" => "组", "Create" => "新建", "Other" => "å…¶ä»–çš„", diff --git a/settings/l10n/zh_CN.php b/settings/l10n/zh_CN.php index 407177d2ac4..dfcf7bf7bfe 100644 --- a/settings/l10n/zh_CN.php +++ b/settings/l10n/zh_CN.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "ç”¨è¯¥åœ°å€æ¥è¿žæŽ¥æ–‡ä»¶ç®¡ç†å™¨ä¸çš„ ownCloud", "Version" => "版本", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "ç”±<a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud社区</a>å¼€å‘, <a href=\"https://github.com/owncloud\" target=\"_blank\">æºä»£ç </a>在<a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>许å¯è¯ä¸‹å‘布。", -"Name" => "åç§°", "Groups" => "组", "Create" => "创建", "Default Storage" => "默认å˜å‚¨", diff --git a/settings/l10n/zh_TW.php b/settings/l10n/zh_TW.php index 7681b10affa..5fe555d14f0 100644 --- a/settings/l10n/zh_TW.php +++ b/settings/l10n/zh_TW.php @@ -49,7 +49,6 @@ "Use this address to connect to your ownCloud in your file manager" => "在您的檔案管ç†å“¡ä¸ä½¿ç”¨é€™å€‹åœ°å€ä¾†é€£ç·šåˆ° ownCloud", "Version" => "版本", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "ç”±<a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud 社å€</a>開發,<a href=\"https://github.com/owncloud\" target=\"_blank\">æºä»£ç¢¼</a>在<a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>許å¯è‰ä¸‹ç™¼å¸ƒã€‚", -"Name" => "å稱", "Groups" => "群組", "Create" => "å‰µé€ ", "Default Storage" => "é è¨å„²å˜å€", diff --git a/settings/personal.php b/settings/personal.php index 47dbcc53ebc..4624bda8397 100644 --- a/settings/personal.php +++ b/settings/personal.php @@ -15,15 +15,7 @@ OC_Util::addScript( '3rdparty', 'chosen/chosen.jquery.min' ); OC_Util::addStyle( '3rdparty', 'chosen' ); OC_App::setActiveNavigationEntry( 'personal' ); -// calculate the disc space -$rootInfo=OC_FileCache::get(''); -$sharedInfo=OC_FileCache::get('/Shared'); -$used=$rootInfo['size']; -if($used<0) $used=0; -$free=OC_Filesystem::free_space(); -$total=$free+$used; -if($total==0) $total=1; // prevent division by zero -$relative=round(($used/$total)*10000)/100; +$storageInfo=OC_Helper::getStorageInfo(); $email=OC_Preferences::getValue(OC_User::getUser(), 'settings', 'email', ''); @@ -50,9 +42,9 @@ foreach($languageCodes as $lang) { // Return template $tmpl = new OC_Template( 'settings', 'personal', 'user'); -$tmpl->assign('usage', OC_Helper::humanFileSize($used)); -$tmpl->assign('total_space', OC_Helper::humanFileSize($total)); -$tmpl->assign('usage_relative', $relative); +$tmpl->assign('usage', OC_Helper::humanFileSize($storageInfo['used'])); +$tmpl->assign('total_space', OC_Helper::humanFileSize($storageInfo['total'])); +$tmpl->assign('usage_relative', $storageInfo['relative']); $tmpl->assign('email', $email); $tmpl->assign('languages', $languages); diff --git a/settings/routes.php b/settings/routes.php index 9b5bf809230..0a5b2fbfd38 100644 --- a/settings/routes.php +++ b/settings/routes.php @@ -39,6 +39,8 @@ $this->create('settings_ajax_removegroup', '/settings/ajax/removegroup.php') ->actionInclude('settings/ajax/removegroup.php'); $this->create('settings_ajax_changepassword', '/settings/ajax/changepassword.php') ->actionInclude('settings/ajax/changepassword.php'); +$this->create('settings_ajax_changedisplayname', '/settings/ajax/changedisplayname.php')
+->actionInclude('settings/ajax/changedisplayname.php'); // personel $this->create('settings_ajax_lostpassword', '/settings/ajax/lostpassword.php') ->actionInclude('settings/ajax/lostpassword.php'); @@ -53,6 +55,8 @@ $this->create('settings_ajax_disableapp', '/settings/ajax/disableapp.php') ->actionInclude('settings/ajax/disableapp.php'); $this->create('settings_ajax_navigationdetect', '/settings/ajax/navigationdetect.php') ->actionInclude('settings/ajax/navigationdetect.php'); +$this->create('apps_custom', '/settings/js/apps-custom.js') + ->actionInclude('settings/js/apps-custom.php'); // admin $this->create('settings_ajax_getlog', '/settings/ajax/getlog.php') ->actionInclude('settings/ajax/getlog.php'); @@ -60,3 +64,5 @@ $this->create('settings_ajax_setloglevel', '/settings/ajax/setloglevel.php') ->actionInclude('settings/ajax/setloglevel.php'); $this->create('settings_ajax_setsecurity', '/settings/ajax/setsecurity.php') ->actionInclude('settings/ajax/setsecurity.php'); +$this->create('isadmin', '/settings/js/isadmin.js') + ->actionInclude('settings/js/isadmin.php'); diff --git a/settings/templates/apps.php b/settings/templates/apps.php index 0490f63fb67..d418b9a66a1 100644 --- a/settings/templates/apps.php +++ b/settings/templates/apps.php @@ -3,9 +3,9 @@ * This file is licensed under the Affero General Public License version 3 or later. * See the COPYING-README file. */?> -<script type='text/javascript'> - var appid = '<?php echo $_['appid']; ?>'; -</script> + <script type="text/javascript" src="<?php echo OC_Helper::linkToRoute('apps_custom');?>?appid=<?php echo $_['appid']; ?>"></script> + <script type="text/javascript" src="<?php echo OC_Helper::linkTo('settings/js', 'apps.js');?>"></script> + <div id="controls"> <a class="button" target="_blank" href="http://owncloud.org/dev/apps/getting-started/"><?php echo $l->t('Add your App');?></a> <a class="button" target="_blank" href="http://apps.owncloud.com"><?php echo $l->t('More Apps');?></a> @@ -15,9 +15,6 @@ <li <?php if($app['active']) echo 'class="active"'?> data-id="<?php echo $app['id'] ?>" <?php if ( isset( $app['ocs_id'] ) ) { echo "data-id-ocs=\"{$app['ocs_id']}\""; } ?> data-type="<?php echo $app['internal'] ? 'internal' : 'external' ?>" data-installed="1"> <a class="app<?php if(!$app['internal']) echo ' externalapp' ?>" href="?appid=<?php echo $app['id'] ?>"><?php echo htmlentities($app['name']) ?></a> - <script> - appData_<?php echo $app['id'] ?>=<?php OC_JSON::encodedPrint($app, false) ?>; - </script> <?php if(!$app['internal']) echo '<small class="externalapp list">3rd party</small>' ?> </li> <?php endforeach;?> @@ -32,4 +29,4 @@ <p class="license hidden"><?php echo $l->t('<span class="licence"></span>-licensed by <span class="author"></span>');?></p> <input class="enable hidden" type="submit" /> </div> -</div> +</div>
\ No newline at end of file diff --git a/settings/templates/help.php b/settings/templates/help.php index 8f51cd87017..7383fdcf56a 100644 --- a/settings/templates/help.php +++ b/settings/templates/help.php @@ -11,25 +11,4 @@ <a class="button newquestion" href="http://owncloud.com" target="_blank"><?php echo $l->t( 'Commercial Support' ); ?></a> </div> <br /><br /> -<iframe src="<?php echo($_['url']); ?>" width="100%" id="ifm" ></iframe> - - -<script language="JavaScript"> -<!-- - -function pageY(elem) { - return elem.offsetParent ? (elem.offsetTop + pageY(elem.offsetParent)) : elem.offsetTop; -} -var buffer = 5; //scroll bar buffer -function resizeIframe() { - var height = document.documentElement.clientHeight; - height -= pageY(document.getElementById('ifm'))+ buffer ; - height = (height < 0) ? 0 : height; - document.getElementById('ifm').style.height = height + 'px'; -} - -document.getElementById('ifm').onload=resizeIframe; -window.onresize = resizeIframe; - -//--> -</script> +<iframe src="<?php echo($_['url']); ?>" width="100%" id="ifm" ></iframe>
\ No newline at end of file diff --git a/settings/templates/users.php b/settings/templates/users.php index 6cbbca24049..4d7c29678ce 100644 --- a/settings/templates/users.php +++ b/settings/templates/users.php @@ -13,12 +13,12 @@ $items = array_flip($_['subadmingroups']); unset($items['admin']); $_['subadmingroups'] = array_flip($items); ?> -<script> -var isadmin = <?php echo $_['isadmin']?'true':'false'; ?>; -</script> + +<script type="text/javascript" src="<?php echo OC_Helper::linkToRoute('isadmin');?>"></script> + <div id="controls"> <form id="newuser" autocomplete="off"> - <input id="newusername" type="text" placeholder="<?php echo $l->t('Name')?>" /> <input + <input id="newusername" type="text" placeholder="<?php echo $l->t('Login Name')?>" /> <input type="password" id="newuserpassword" placeholder="<?php echo $l->t('Password')?>" /> <select class="groupsselect" @@ -73,12 +73,11 @@ var isadmin = <?php echo $_['isadmin']?'true':'false'; ?>; </div> </div> -<div id='notification'></div> - <table data-groups="<?php echo implode(', ', $allGroups);?>"> <thead> <tr> - <th id='headerName'><?php echo $l->t('Name')?></th> + <th id='headerName'><?php echo $l->t('Login Name')?></th> + <th id="headerDisplayName"><?php echo $l->t( 'Display Name' ); ?></th> <th id="headerPassword"><?php echo $l->t( 'Password' ); ?></th> <th id="headerGroups"><?php echo $l->t( 'Groups' ); ?></th> <?php if(is_array($_['subadmins']) || $_['subadmins']): ?> @@ -90,11 +89,16 @@ var isadmin = <?php echo $_['isadmin']?'true':'false'; ?>; </thead> <tbody> <?php foreach($_["users"] as $user): ?> - <tr data-uid="<?php echo $user["name"] ?>"> + <tr data-uid="<?php echo $user["name"] ?>" + data-displayName="<?php echo $user["displayName"] ?>"> <td class="name"><?php echo $user["name"]; ?></td> + <td class="displayName"><span><?php echo $user["displayName"]; ?></span> <img class="svg action" + src="<?php echo image_path('core', 'actions/rename.svg')?>" + alt="<?php echo $l->t("change display name")?>" title="<?php echo $l->t("change display name")?>"/> + </td> <td class="password"><span>â—â—â—â—â—â—â—</span> <img class="svg action" src="<?php echo image_path('core', 'actions/rename.svg')?>" - alt="set new password" title="set new password"/> + alt="<?php echo $l->t("set new password")?>" title="<?php echo $l->t("set new password")?>"/> </td> <td class="groups"><select class="groupsselect" diff --git a/settings/users.php b/settings/users.php index 668d974693a..ab7a7aed734 100644 --- a/settings/users.php +++ b/settings/users.php @@ -22,11 +22,11 @@ $isadmin = OC_User::isAdminUser(OC_User::getUser()); if($isadmin) { $accessiblegroups = OC_Group::getGroups(); - $accessibleusers = OC_User::getUsers('', 30); + $accessibleusers = OC_User::getDisplayNames('', 30); $subadmins = OC_SubAdmin::getAllSubAdmins(); }else{ $accessiblegroups = OC_SubAdmin::getSubAdminsGroups(OC_User::getUser()); - $accessibleusers = OC_Group::usersInGroups($accessiblegroups, '', 30); + $accessibleusers = OC_Group::displayNamesInGroups($accessiblegroups, '', 30); $subadmins = false; } @@ -42,16 +42,22 @@ $defaultQuota=OC_Appconfig::getValue('files', 'default_quota', 'none'); $defaultQuotaIsUserDefined=array_search($defaultQuota, $quotaPreset)===false && array_search($defaultQuota, array('none', 'default'))===false; // load users and quota -foreach($accessibleusers as $i) { - $quota=OC_Preferences::getValue($i, 'files', 'quota', 'default'); +foreach($accessibleusers as $uid => $displayName) { + $quota=OC_Preferences::getValue($uid, 'files', 'quota', 'default'); $isQuotaUserDefined=array_search($quota, $quotaPreset)===false && array_search($quota, array('none', 'default'))===false; + $name = $displayName; + if ( $displayName != $uid ) { + $name = $name . ' ('.$uid.')'; + } + $users[] = array( - "name" => $i, - "groups" => join( ", ", /*array_intersect(*/OC_Group::getUserGroups($i)/*, OC_SubAdmin::getSubAdminsGroups(OC_User::getUser()))*/), + "name" => $uid, + "displayName" => $displayName, + "groups" => join( ", ", /*array_intersect(*/OC_Group::getUserGroups($uid)/*, OC_SubAdmin::getSubAdminsGroups(OC_User::getUser()))*/), 'quota'=>$quota, 'isQuotaUserDefined'=>$isQuotaUserDefined, - 'subadmin'=>implode(', ', OC_SubAdmin::getSubAdminsGroups($i))); + 'subadmin'=>implode(', ', OC_SubAdmin::getSubAdminsGroups($uid))); } foreach( $accessiblegroups as $i ) { diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 115a15883a0..b97161ee6e4 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -8,24 +8,5 @@ if(!class_exists('PHPUnit_Framework_TestCase')) { require_once('PHPUnit/Autoload.php'); } -//SimpleTest compatibility -abstract class UnitTestCase extends PHPUnit_Framework_TestCase{ - function assertEqual($expected, $actual, $string='') { - $this->assertEquals($expected, $actual, $string); - } - - function assertNotEqual($expected, $actual, $string='') { - $this->assertNotEquals($expected, $actual, $string); - } - - static function assertTrue($actual, $string='') { - parent::assertTrue((bool)$actual, $string); - } - - static function assertFalse($actual, $string='') { - parent::assertFalse((bool)$actual, $string); - } -} - OC_Hook::clear(); OC_Log::$enabled = false; diff --git a/tests/lib/archive.php b/tests/lib/archive.php index cd2ca6630a5..be5cc897a67 100644 --- a/tests/lib/archive.php +++ b/tests/lib/archive.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -abstract class Test_Archive extends UnitTestCase { +abstract class Test_Archive extends PHPUnit_Framework_TestCase { /** * @var OC_Archive */ @@ -27,7 +27,7 @@ abstract class Test_Archive extends UnitTestCase { $this->instance=$this->getExisting(); $allFiles=$this->instance->getFiles(); $expected=array('lorem.txt','logo-wide.png','dir/', 'dir/lorem.txt'); - $this->assertEqual(4, count($allFiles), 'only found '.count($allFiles).' out of 4 expected files'); + $this->assertEquals(4, count($allFiles), 'only found '.count($allFiles).' out of 4 expected files'); foreach($expected as $file) { $this->assertContains($file, $allFiles, 'cant find '. $file . ' in archive'); $this->assertTrue($this->instance->fileExists($file), 'file '.$file.' does not exist in archive'); @@ -36,14 +36,14 @@ abstract class Test_Archive extends UnitTestCase { $rootContent=$this->instance->getFolder(''); $expected=array('lorem.txt','logo-wide.png', 'dir/'); - $this->assertEqual(3, count($rootContent)); + $this->assertEquals(3, count($rootContent)); foreach($expected as $file) { $this->assertContains($file, $rootContent, 'cant find '. $file . ' in archive'); } $dirContent=$this->instance->getFolder('dir/'); $expected=array('lorem.txt'); - $this->assertEqual(1, count($dirContent)); + $this->assertEquals(1, count($dirContent)); foreach($expected as $file) { $this->assertContains($file, $dirContent, 'cant find '. $file . ' in archive'); } @@ -53,36 +53,36 @@ abstract class Test_Archive extends UnitTestCase { $this->instance=$this->getExisting(); $dir=OC::$SERVERROOT.'/tests/data'; $textFile=$dir.'/lorem.txt'; - $this->assertEqual(file_get_contents($textFile), $this->instance->getFile('lorem.txt')); + $this->assertEquals(file_get_contents($textFile), $this->instance->getFile('lorem.txt')); $tmpFile=OCP\Files::tmpFile('.txt'); $this->instance->extractFile('lorem.txt', $tmpFile); - $this->assertEqual(file_get_contents($textFile), file_get_contents($tmpFile)); + $this->assertEquals(file_get_contents($textFile), file_get_contents($tmpFile)); } public function testWrite() { $dir=OC::$SERVERROOT.'/tests/data'; $textFile=$dir.'/lorem.txt'; $this->instance=$this->getNew(); - $this->assertEqual(0, count($this->instance->getFiles())); + $this->assertEquals(0, count($this->instance->getFiles())); $this->instance->addFile('lorem.txt', $textFile); - $this->assertEqual(1, count($this->instance->getFiles())); + $this->assertEquals(1, count($this->instance->getFiles())); $this->assertTrue($this->instance->fileExists('lorem.txt')); $this->assertFalse($this->instance->fileExists('lorem.txt/')); - $this->assertEqual(file_get_contents($textFile), $this->instance->getFile('lorem.txt')); + $this->assertEquals(file_get_contents($textFile), $this->instance->getFile('lorem.txt')); $this->instance->addFile('lorem.txt', 'foobar'); - $this->assertEqual('foobar', $this->instance->getFile('lorem.txt')); + $this->assertEquals('foobar', $this->instance->getFile('lorem.txt')); } public function testReadStream() { $dir=OC::$SERVERROOT.'/tests/data'; $this->instance=$this->getExisting(); $fh=$this->instance->getStream('lorem.txt', 'r'); - $this->assertTrue($fh); + $this->assertTrue((bool)$fh); $content=fread($fh, $this->instance->filesize('lorem.txt')); fclose($fh); - $this->assertEqual(file_get_contents($dir.'/lorem.txt'), $content); + $this->assertEquals(file_get_contents($dir.'/lorem.txt'), $content); } public function testWriteStream() { $dir=OC::$SERVERROOT.'/tests/data'; @@ -93,7 +93,7 @@ abstract class Test_Archive extends UnitTestCase { fclose($source); fclose($fh); $this->assertTrue($this->instance->fileExists('lorem.txt')); - $this->assertEqual(file_get_contents($dir.'/lorem.txt'), $this->instance->getFile('lorem.txt')); + $this->assertEquals(file_get_contents($dir.'/lorem.txt'), $this->instance->getFile('lorem.txt')); } public function testFolder() { $this->instance=$this->getNew(); @@ -111,10 +111,10 @@ abstract class Test_Archive extends UnitTestCase { $this->instance=$this->getExisting(); $tmpDir=OCP\Files::tmpFolder(); $this->instance->extract($tmpDir); - $this->assertEqual(true, file_exists($tmpDir.'lorem.txt')); - $this->assertEqual(true, file_exists($tmpDir.'dir/lorem.txt')); - $this->assertEqual(true, file_exists($tmpDir.'logo-wide.png')); - $this->assertEqual(file_get_contents($dir.'/lorem.txt'), file_get_contents($tmpDir.'lorem.txt')); + $this->assertEquals(true, file_exists($tmpDir.'lorem.txt')); + $this->assertEquals(true, file_exists($tmpDir.'dir/lorem.txt')); + $this->assertEquals(true, file_exists($tmpDir.'logo-wide.png')); + $this->assertEquals(file_get_contents($dir.'/lorem.txt'), file_get_contents($tmpDir.'lorem.txt')); OCP\Files::rmdirr($tmpDir); } public function testMoveRemove() { @@ -126,7 +126,7 @@ abstract class Test_Archive extends UnitTestCase { $this->instance->rename('lorem.txt', 'target.txt'); $this->assertTrue($this->instance->fileExists('target.txt')); $this->assertFalse($this->instance->fileExists('lorem.txt')); - $this->assertEqual(file_get_contents($textFile), $this->instance->getFile('target.txt')); + $this->assertEquals(file_get_contents($textFile), $this->instance->getFile('target.txt')); $this->instance->remove('target.txt'); $this->assertFalse($this->instance->fileExists('target.txt')); } diff --git a/tests/lib/cache.php b/tests/lib/cache.php index 1a1287ff135..3dcf39f7d60 100644 --- a/tests/lib/cache.php +++ b/tests/lib/cache.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -abstract class Test_Cache extends UnitTestCase { +abstract class Test_Cache extends PHPUnit_Framework_TestCase { /** * @var OC_Cache cache; */ @@ -26,19 +26,19 @@ abstract class Test_Cache extends UnitTestCase { $this->instance->set('value1', $value); $this->assertTrue($this->instance->hasKey('value1')); $received=$this->instance->get('value1'); - $this->assertEqual($value, $received, 'Value recieved from cache not equal to the original'); + $this->assertEquals($value, $received, 'Value recieved from cache not equal to the original'); $value='ipsum lorum'; $this->instance->set('value1', $value); $received=$this->instance->get('value1'); - $this->assertEqual($value, $received, 'Value not overwritten by second set'); + $this->assertEquals($value, $received, 'Value not overwritten by second set'); $value2='foobar'; $this->instance->set('value2', $value2); $received2=$this->instance->get('value2'); $this->assertTrue($this->instance->hasKey('value1')); $this->assertTrue($this->instance->hasKey('value2')); - $this->assertEqual($value, $received, 'Value changed while setting other variable'); - $this->assertEqual($value2, $received2, 'Second value not equal to original'); + $this->assertEquals($value, $received, 'Value changed while setting other variable'); + $this->assertEquals($value2, $received2, 'Second value not equal to original'); $this->assertFalse($this->instance->hasKey('not_set')); $this->assertNull($this->instance->get('not_set'), 'Unset value not equal to null'); diff --git a/tests/lib/cache/file.php b/tests/lib/cache/file.php index d64627198e0..5dcd3268804 100644 --- a/tests/lib/cache/file.php +++ b/tests/lib/cache/file.php @@ -38,8 +38,8 @@ class Test_Cache_File extends Test_Cache { } //set up temporary storage - OC_Filesystem::clearMounts(); - OC_Filesystem::mount('OC_Filestorage_Temporary', array(), '/'); + \OC\Files\Filesystem::clearMounts(); + \OC\Files\Filesystem::mount('\OC\Files\Storage\Temporary',array(),'/'); OC_User::clearBackends(); OC_User::useBackend(new OC_User_Dummy()); @@ -51,7 +51,7 @@ class Test_Cache_File extends Test_Cache { OC_User::setUserId('test'); //set up the users dir - $rootView=new OC_FilesystemView(''); + $rootView=new \OC\Files\View(''); $rootView->mkdir('/test'); $this->instance=new OC_Cache_File(); diff --git a/tests/lib/db.php b/tests/lib/db.php index c2eb38dae83..440f3fb6bfd 100644 --- a/tests/lib/db.php +++ b/tests/lib/db.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class Test_DB extends UnitTestCase { +class Test_DB extends PHPUnit_Framework_TestCase { protected $backupGlobals = FALSE; protected static $schema_file = 'static://test_db_scheme'; @@ -35,18 +35,18 @@ class Test_DB extends UnitTestCase { public function testQuotes() { $query = OC_DB::prepare('SELECT `fullname` FROM *PREFIX*'.$this->table2.' WHERE `uri` = ?'); $result = $query->execute(array('uri_1')); - $this->assertTrue($result); + $this->assertTrue((bool)$result); $row = $result->fetchRow(); $this->assertFalse($row); $query = OC_DB::prepare('INSERT INTO *PREFIX*'.$this->table2.' (`fullname`,`uri`) VALUES (?,?)'); $result = $query->execute(array('fullname test', 'uri_1')); - $this->assertTrue($result); + $this->assertTrue((bool)$result); $query = OC_DB::prepare('SELECT `fullname`,`uri` FROM *PREFIX*'.$this->table2.' WHERE `uri` = ?'); $result = $query->execute(array('uri_1')); - $this->assertTrue($result); + $this->assertTrue((bool)$result); $row = $result->fetchRow(); $this->assertArrayHasKey('fullname', $row); - $this->assertEqual($row['fullname'], 'fullname test'); + $this->assertEquals($row['fullname'], 'fullname test'); $row = $result->fetchRow(); $this->assertFalse($row); } @@ -54,19 +54,19 @@ class Test_DB extends UnitTestCase { public function testNOW() { $query = OC_DB::prepare('INSERT INTO *PREFIX*'.$this->table2.' (`fullname`,`uri`) VALUES (NOW(),?)'); $result = $query->execute(array('uri_2')); - $this->assertTrue($result); + $this->assertTrue((bool)$result); $query = OC_DB::prepare('SELECT `fullname`,`uri` FROM *PREFIX*'.$this->table2.' WHERE `uri` = ?'); $result = $query->execute(array('uri_2')); - $this->assertTrue($result); + $this->assertTrue((bool)$result); } public function testUNIX_TIMESTAMP() { $query = OC_DB::prepare('INSERT INTO *PREFIX*'.$this->table2.' (`fullname`,`uri`) VALUES (UNIX_TIMESTAMP(),?)'); $result = $query->execute(array('uri_3')); - $this->assertTrue($result); + $this->assertTrue((bool)$result); $query = OC_DB::prepare('SELECT `fullname`,`uri` FROM *PREFIX*'.$this->table2.' WHERE `uri` = ?'); $result = $query->execute(array('uri_3')); - $this->assertTrue($result); + $this->assertTrue((bool)$result); } public function testinsertIfNotExist() { @@ -85,13 +85,13 @@ class Test_DB extends UnitTestCase { 'type' => $entry['type'], 'category' => $entry['category'], )); - $this->assertTrue($result); + $this->assertTrue((bool)$result); } $query = OC_DB::prepare('SELECT * FROM *PREFIX*'.$this->table3); $result = $query->execute(); - $this->assertTrue($result); - $this->assertEqual('4', $result->numRows()); + $this->assertTrue((bool)$result); + $this->assertEquals('4', $result->numRows()); } public function testinsertIfNotExistDontOverwrite() { @@ -102,14 +102,14 @@ class Test_DB extends UnitTestCase { // Normal test to have same known data inserted. $query = OC_DB::prepare('INSERT INTO *PREFIX*'.$this->table2.' (`fullname`, `uri`, `carddata`) VALUES (?, ?, ?)'); $result = $query->execute(array($fullname, $uri, $carddata)); - $this->assertTrue($result); + $this->assertTrue((bool)$result); $query = OC_DB::prepare('SELECT `fullname`, `uri`, `carddata` FROM *PREFIX*'.$this->table2.' WHERE `uri` = ?'); $result = $query->execute(array($uri)); - $this->assertTrue($result); + $this->assertTrue((bool)$result); $row = $result->fetchRow(); $this->assertArrayHasKey('carddata', $row); - $this->assertEqual($carddata, $row['carddata']); - $this->assertEqual('1', $result->numRows()); + $this->assertEquals($carddata, $row['carddata']); + $this->assertEquals('1', $result->numRows()); // Try to insert a new row $result = OC_DB::insertIfNotExist('*PREFIX*'.$this->table2, @@ -117,17 +117,17 @@ class Test_DB extends UnitTestCase { 'fullname' => $fullname, 'uri' => $uri, )); - $this->assertTrue($result); + $this->assertTrue((bool)$result); $query = OC_DB::prepare('SELECT `fullname`, `uri`, `carddata` FROM *PREFIX*'.$this->table2.' WHERE `uri` = ?'); $result = $query->execute(array($uri)); - $this->assertTrue($result); + $this->assertTrue((bool)$result); $row = $result->fetchRow(); $this->assertArrayHasKey('carddata', $row); // Test that previously inserted data isn't overwritten - $this->assertEqual($carddata, $row['carddata']); + $this->assertEquals($carddata, $row['carddata']); // And that a new row hasn't been inserted. - $this->assertEqual('1', $result->numRows()); + $this->assertEquals('1', $result->numRows()); } } diff --git a/tests/lib/dbschema.php b/tests/lib/dbschema.php index cd408160afb..fb60ce7dbb7 100644 --- a/tests/lib/dbschema.php +++ b/tests/lib/dbschema.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class Test_DBSchema extends UnitTestCase { +class Test_DBSchema extends PHPUnit_Framework_TestCase { protected static $schema_file = 'static://test_db_scheme'; protected static $schema_file2 = 'static://test_db_scheme2'; protected $test_prefix; diff --git a/tests/lib/files/cache/cache.php b/tests/lib/files/cache/cache.php new file mode 100644 index 00000000000..c466fbb63e7 --- /dev/null +++ b/tests/lib/files/cache/cache.php @@ -0,0 +1,215 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Files\Cache; + +class Cache extends \PHPUnit_Framework_TestCase { + /** + * @var \OC\Files\Storage\Temporary $storage; + */ + private $storage; + + /** + * @var \OC\Files\Cache\Cache $cache + */ + private $cache; + + public function testSimple() { + $file1 = 'foo'; + $file2 = 'foo/bar'; + $data1 = array('size' => 100, 'mtime' => 50, 'mimetype' => 'foo/folder'); + $data2 = array('size' => 1000, 'mtime' => 20, 'mimetype' => 'foo/file'); + + $this->assertFalse($this->cache->inCache($file1)); + $this->assertEquals($this->cache->get($file1), null); + + $id1 = $this->cache->put($file1, $data1); + $this->assertTrue($this->cache->inCache($file1)); + $cacheData1 = $this->cache->get($file1); + foreach ($data1 as $key => $value) { + $this->assertEquals($value, $cacheData1[$key]); + } + $this->assertEquals($cacheData1['mimepart'], 'foo'); + $this->assertEquals($cacheData1['fileid'], $id1); + $this->assertEquals($id1, $this->cache->getId($file1)); + + $this->assertFalse($this->cache->inCache($file2)); + $id2 = $this->cache->put($file2, $data2); + $this->assertTrue($this->cache->inCache($file2)); + $cacheData2 = $this->cache->get($file2); + foreach ($data2 as $key => $value) { + $this->assertEquals($value, $cacheData2[$key]); + } + $this->assertEquals($cacheData1['fileid'], $cacheData2['parent']); + $this->assertEquals($cacheData2['fileid'], $id2); + $this->assertEquals($id2, $this->cache->getId($file2)); + $this->assertEquals($id1, $this->cache->getParentId($file2)); + + $newSize = 1050; + $newId2 = $this->cache->put($file2, array('size' => $newSize)); + $cacheData2 = $this->cache->get($file2); + $this->assertEquals($newId2, $id2); + $this->assertEquals($cacheData2['size'], $newSize); + $this->assertEquals($cacheData1, $this->cache->get($file1)); + + $this->cache->remove($file2); + $this->assertFalse($this->cache->inCache($file2)); + $this->assertEquals($this->cache->get($file2), null); + $this->assertTrue($this->cache->inCache($file1)); + + $this->assertEquals($cacheData1, $this->cache->get($id1)); + } + + public function testPartial() { + $file1 = 'foo'; + + $this->cache->put($file1, array('size' => 10)); + $this->assertEquals(array('size' => 10), $this->cache->get($file1)); + + $this->cache->put($file1, array('mtime' => 15)); + $this->assertEquals(array('size' => 10, 'mtime' => 15), $this->cache->get($file1)); + + $this->cache->put($file1, array('size' => 12)); + $this->assertEquals(array('size' => 12, 'mtime' => 15), $this->cache->get($file1)); + } + + public function testFolder() { + $file1 = 'folder'; + $file2 = 'folder/bar'; + $file3 = 'folder/foo'; + $data1 = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory'); + $fileData = array(); + $fileData['bar'] = array('size' => 1000, 'mtime' => 20, 'mimetype' => 'foo/file'); + $fileData['foo'] = array('size' => 20, 'mtime' => 25, 'mimetype' => 'foo/file'); + + $this->cache->put($file1, $data1); + $this->cache->put($file2, $fileData['bar']); + $this->cache->put($file3, $fileData['foo']); + + $content = $this->cache->getFolderContents($file1); + $this->assertEquals(count($content), 2); + foreach ($content as $cachedData) { + $data = $fileData[$cachedData['name']]; + foreach ($data as $name => $value) { + $this->assertEquals($value, $cachedData[$name]); + } + } + + $file4 = 'folder/unkownSize'; + $fileData['unkownSize'] = array('size' => -1, 'mtime' => 25, 'mimetype' => 'foo/file'); + $this->cache->put($file4, $fileData['unkownSize']); + + $this->assertEquals(-1, $this->cache->calculateFolderSize($file1)); + + $fileData['unkownSize'] = array('size' => 5, 'mtime' => 25, 'mimetype' => 'foo/file'); + $this->cache->put($file4, $fileData['unkownSize']); + + $this->assertEquals(1025, $this->cache->calculateFolderSize($file1)); + + $this->cache->remove('folder'); + $this->assertFalse($this->cache->inCache('folder/foo')); + $this->assertFalse($this->cache->inCache('folder/bar')); + } + + function testStatus() { + $this->assertEquals(\OC\Files\Cache\Cache::NOT_FOUND, $this->cache->getStatus('foo')); + $this->cache->put('foo', array('size' => -1)); + $this->assertEquals(\OC\Files\Cache\Cache::PARTIAL, $this->cache->getStatus('foo')); + $this->cache->put('foo', array('size' => -1, 'mtime' => 20, 'mimetype' => 'foo/file')); + $this->assertEquals(\OC\Files\Cache\Cache::SHALLOW, $this->cache->getStatus('foo')); + $this->cache->put('foo', array('size' => 10)); + $this->assertEquals(\OC\Files\Cache\Cache::COMPLETE, $this->cache->getStatus('foo')); + } + + function testSearch() { + $file1 = 'folder'; + $file2 = 'folder/foobar'; + $file3 = 'folder/foo'; + $data1 = array('size' => 100, 'mtime' => 50, 'mimetype' => 'foo/folder'); + $fileData = array(); + $fileData['foobar'] = array('size' => 1000, 'mtime' => 20, 'mimetype' => 'foo/file'); + $fileData['foo'] = array('size' => 20, 'mtime' => 25, 'mimetype' => 'foo/file'); + + $this->cache->put($file1, $data1); + $this->cache->put($file2, $fileData['foobar']); + $this->cache->put($file3, $fileData['foo']); + + $this->assertEquals(2, count($this->cache->search('%foo%'))); + $this->assertEquals(1, count($this->cache->search('foo'))); + $this->assertEquals(1, count($this->cache->search('%folder%'))); + $this->assertEquals(1, count($this->cache->search('folder%'))); + $this->assertEquals(3, count($this->cache->search('%'))); + + $this->assertEquals(3, count($this->cache->searchByMime('foo'))); + $this->assertEquals(2, count($this->cache->searchByMime('foo/file'))); + } + + function testMove() { + $file1 = 'folder'; + $file2 = 'folder/bar'; + $file3 = 'folder/foo'; + $file4 = 'folder/foo/1'; + $file5 = 'folder/foo/2'; + $data = array('size' => 100, 'mtime' => 50, 'mimetype' => 'foo/bar'); + + $this->cache->put($file1, $data); + $this->cache->put($file2, $data); + $this->cache->put($file3, $data); + $this->cache->put($file4, $data); + $this->cache->put($file5, $data); + + $this->cache->move('folder/foo', 'folder/foobar'); + + $this->assertFalse($this->cache->inCache('folder/foo')); + $this->assertFalse($this->cache->inCache('folder/foo/1')); + $this->assertFalse($this->cache->inCache('folder/foo/2')); + + $this->assertTrue($this->cache->inCache('folder/bar')); + $this->assertTrue($this->cache->inCache('folder/foobar')); + $this->assertTrue($this->cache->inCache('folder/foobar/1')); + $this->assertTrue($this->cache->inCache('folder/foobar/2')); + } + + function testGetIncomplete() { + $file1 = 'folder1'; + $file2 = 'folder2'; + $file3 = 'folder3'; + $file4 = 'folder4'; + $data = array('size' => 10, 'mtime' => 50, 'mimetype' => 'foo/bar'); + + $this->cache->put($file1, $data); + $data['size'] = -1; + $this->cache->put($file2, $data); + $this->cache->put($file3, $data); + $data['size'] = 12; + $this->cache->put($file4, $data); + + $this->assertEquals($file3, $this->cache->getIncomplete()); + } + + function testNonExisting() { + $this->assertFalse($this->cache->get('foo.txt')); + $this->assertEquals(array(), $this->cache->getFolderContents('foo')); + } + + function testGetById() { + $storageId = $this->storage->getId(); + $data = array('size' => 1000, 'mtime' => 20, 'mimetype' => 'foo/file'); + $id = $this->cache->put('foo', $data); + $this->assertEquals(array($storageId, 'foo'), \OC\Files\Cache\Cache::getById($id)); + } + + public function tearDown() { + $this->cache->clear(); + } + + public function setUp() { + $this->storage = new \OC\Files\Storage\Temporary(array()); + $this->cache = new \OC\Files\Cache\Cache($this->storage); + } +} diff --git a/tests/lib/files/cache/permissions.php b/tests/lib/files/cache/permissions.php new file mode 100644 index 00000000000..56dbbc4518e --- /dev/null +++ b/tests/lib/files/cache/permissions.php @@ -0,0 +1,56 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Files\Cache; + +class Permissions extends \PHPUnit_Framework_TestCase { + /*** + * @var \OC\Files\Cache\Permissions $permissionsCache + */ + private $permissionsCache; + + function setUp(){ + $this->permissionsCache=new \OC\Files\Cache\Permissions('dummy'); + } + + function testSimple() { + $ids = range(1, 10); + $user = uniqid(); + + $this->assertEquals(-1, $this->permissionsCache->get(1, $user)); + $this->permissionsCache->set(1, $user, 1); + $this->assertEquals(1, $this->permissionsCache->get(1, $user)); + $this->assertEquals(-1, $this->permissionsCache->get(2, $user)); + $this->assertEquals(-1, $this->permissionsCache->get(1, $user . '2')); + + $this->permissionsCache->set(1, $user, 2); + $this->assertEquals(2, $this->permissionsCache->get(1, $user)); + + $this->permissionsCache->set(2, $user, 1); + $this->assertEquals(1, $this->permissionsCache->get(2, $user)); + + $this->permissionsCache->remove(1, $user); + $this->assertEquals(-1, $this->permissionsCache->get(1, $user)); + $this->permissionsCache->remove(1, $user . '2'); + $this->assertEquals(1, $this->permissionsCache->get(2, $user)); + + $expected = array(); + foreach ($ids as $id) { + $this->permissionsCache->set($id, $user, 10 + $id); + $expected[$id] = 10 + $id; + } + $this->assertEquals($expected, $this->permissionsCache->getMultiple($ids, $user)); + + $this->permissionsCache->removeMultiple(array(10, 9), $user); + unset($expected[9]); + unset($expected[10]); + $this->assertEquals($expected, $this->permissionsCache->getMultiple($ids, $user)); + + $this->permissionsCache->removeMultiple($ids, $user); + } +} diff --git a/tests/lib/files/cache/scanner.php b/tests/lib/files/cache/scanner.php new file mode 100644 index 00000000000..3885c99e6d3 --- /dev/null +++ b/tests/lib/files/cache/scanner.php @@ -0,0 +1,141 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Files\Cache; + +class Scanner extends \PHPUnit_Framework_TestCase { + /** + * @var \OC\Files\Storage\Storage $storage + */ + private $storage; + + /** + * @var \OC\Files\Cache\Scanner $scanner + */ + private $scanner; + + /** + * @var \OC\Files\Cache\Cache $cache + */ + private $cache; + + function testFile() { + $data = "dummy file data\n"; + $this->storage->file_put_contents('foo.txt', $data); + $this->scanner->scanFile('foo.txt'); + + $this->assertEquals($this->cache->inCache('foo.txt'), true); + $cachedData = $this->cache->get('foo.txt'); + $this->assertEquals($cachedData['size'], strlen($data)); + $this->assertEquals($cachedData['mimetype'], 'text/plain'); + $this->assertNotEquals($cachedData['parent'], -1); //parent folders should be scanned automatically + + $data = file_get_contents(\OC::$SERVERROOT . '/core/img/logo.png'); + $this->storage->file_put_contents('foo.png', $data); + $this->scanner->scanFile('foo.png'); + + $this->assertEquals($this->cache->inCache('foo.png'), true); + $cachedData = $this->cache->get('foo.png'); + $this->assertEquals($cachedData['size'], strlen($data)); + $this->assertEquals($cachedData['mimetype'], 'image/png'); + } + + private function fillTestFolders() { + $textData = "dummy file data\n"; + $imgData = file_get_contents(\OC::$SERVERROOT . '/core/img/logo.png'); + $this->storage->mkdir('folder'); + $this->storage->file_put_contents('foo.txt', $textData); + $this->storage->file_put_contents('foo.png', $imgData); + $this->storage->file_put_contents('folder/bar.txt', $textData); + } + + function testFolder() { + $this->fillTestFolders(); + + $this->scanner->scan(''); + $this->assertEquals($this->cache->inCache(''), true); + $this->assertEquals($this->cache->inCache('foo.txt'), true); + $this->assertEquals($this->cache->inCache('foo.png'), true); + $this->assertEquals($this->cache->inCache('folder'), true); + $this->assertEquals($this->cache->inCache('folder/bar.txt'), true); + + $cachedDataText = $this->cache->get('foo.txt'); + $cachedDataText2 = $this->cache->get('foo.txt'); + $cachedDataImage = $this->cache->get('foo.png'); + $cachedDataFolder = $this->cache->get(''); + $cachedDataFolder2 = $this->cache->get('folder'); + + $this->assertEquals($cachedDataImage['parent'], $cachedDataText['parent']); + $this->assertEquals($cachedDataFolder['fileid'], $cachedDataImage['parent']); + $this->assertEquals($cachedDataFolder['size'], $cachedDataImage['size'] + $cachedDataText['size'] + $cachedDataText2['size']); + $this->assertEquals($cachedDataFolder2['size'], $cachedDataText2['size']); + } + + function testShallow() { + $this->fillTestFolders(); + + $this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW); + $this->assertEquals($this->cache->inCache(''), true); + $this->assertEquals($this->cache->inCache('foo.txt'), true); + $this->assertEquals($this->cache->inCache('foo.png'), true); + $this->assertEquals($this->cache->inCache('folder'), true); + $this->assertEquals($this->cache->inCache('folder/bar.txt'), false); + + $cachedDataFolder = $this->cache->get(''); + $cachedDataFolder2 = $this->cache->get('folder'); + + $this->assertEquals(-1, $cachedDataFolder['size']); + $this->assertEquals(-1, $cachedDataFolder2['size']); + + $this->scanner->scan('folder', \OC\Files\Cache\Scanner::SCAN_SHALLOW); + + $cachedDataFolder2 = $this->cache->get('folder'); + + $this->assertNotEquals($cachedDataFolder2['size'], -1); + + $this->cache->correctFolderSize('folder'); + + $cachedDataFolder = $this->cache->get(''); + $this->assertNotEquals($cachedDataFolder['size'], -1); + } + + function testBackgroundScan(){ + $this->fillTestFolders(); + $this->storage->mkdir('folder2'); + $this->storage->file_put_contents('folder2/bar.txt', 'foobar'); + + $this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW); + $this->assertFalse($this->cache->inCache('folder/bar.txt')); + $this->assertFalse($this->cache->inCache('folder/2bar.txt')); + $cachedData = $this->cache->get(''); + $this->assertEquals(-1, $cachedData['size']); + + $this->scanner->backgroundScan(); + + $this->assertTrue($this->cache->inCache('folder/bar.txt')); + $this->assertTrue($this->cache->inCache('folder/bar.txt')); + + $cachedData = $this->cache->get(''); + $this->assertnotEquals(-1, $cachedData['size']); + + $this->assertFalse($this->cache->getIncomplete()); + } + + function setUp() { + $this->storage = new \OC\Files\Storage\Temporary(array()); + $this->scanner = new \OC\Files\Cache\Scanner($this->storage); + $this->cache = new \OC\Files\Cache\Cache($this->storage); + } + + function tearDown() { + $ids = $this->cache->getAll(); + $permissionsCache = $this->storage->getPermissionsCache(); + $permissionsCache->removeMultiple($ids, \OC_User::getUser()); + $this->cache->clear(); + } +} diff --git a/tests/lib/files/cache/updater.php b/tests/lib/files/cache/updater.php new file mode 100644 index 00000000000..b83dd0c26e5 --- /dev/null +++ b/tests/lib/files/cache/updater.php @@ -0,0 +1,147 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Files\Cache; + +use \OC\Files\Filesystem as Filesystem; + +class Updater extends \PHPUnit_Framework_TestCase { + /** + * @var \OC\Files\Storage\Storage $storage + */ + private $storage; + + /** + * @var \OC\Files\Cache\Scanner $scanner + */ + private $scanner; + + /** + * @var \OC\Files\Cache\Cache $cache + */ + private $cache; + + private static $user; + + public function setUp() { + $this->storage = new \OC\Files\Storage\Temporary(array()); + $textData = "dummy file data\n"; + $imgData = file_get_contents(\OC::$SERVERROOT . '/core/img/logo.png'); + $this->storage->mkdir('folder'); + $this->storage->file_put_contents('foo.txt', $textData); + $this->storage->file_put_contents('foo.png', $imgData); + $this->storage->file_put_contents('folder/bar.txt', $textData); + $this->storage->file_put_contents('folder/bar2.txt', $textData); + + $this->scanner = $this->storage->getScanner(); + $this->scanner->scan(''); + $this->cache = $this->storage->getCache(); + + if (!self::$user) { + if (!\OC\Files\Filesystem::getView()) { + self::$user = uniqid(); + \OC\Files\Filesystem::init('/' . self::$user . '/files'); + } else { + self::$user = \OC_User::getUser(); + } + } + + Filesystem::clearMounts(); + Filesystem::mount($this->storage, array(), '/' . self::$user . '/files'); + + \OC_Hook::connect('OC_Filesystem', 'post_write', '\OC\Files\Cache\Updater', 'writeHook'); + \OC_Hook::connect('OC_Filesystem', 'post_delete', '\OC\Files\Cache\Updater', 'deleteHook'); + \OC_Hook::connect('OC_Filesystem', 'post_rename', '\OC\Files\Cache\Updater', 'renameHook'); + + } + + public function tearDown() { + if ($this->cache) { + $this->cache->clear(); + } + Filesystem::tearDown(); + } + + public function testWrite() { + $textSize = strlen("dummy file data\n"); + $imageSize = filesize(\OC::$SERVERROOT . '/core/img/logo.png'); + $rootCachedData = $this->cache->get(''); + $this->assertEquals(3 * $textSize + $imageSize, $rootCachedData['size']); + + $fooCachedData = $this->cache->get('foo.txt'); + Filesystem::file_put_contents('foo.txt', 'asd'); + $cachedData = $this->cache->get('foo.txt'); + $this->assertEquals(3, $cachedData['size']); + $this->assertNotEquals($fooCachedData['etag'], $cachedData['etag']); + $mtime = $cachedData['mtime']; + $cachedData = $this->cache->get(''); + $this->assertEquals(2 * $textSize + $imageSize + 3, $cachedData['size']); + $this->assertNotEquals($rootCachedData['etag'], $cachedData['etag']); + $this->assertGreaterThanOrEqual($rootCachedData['mtime'], $mtime); + $rootCachedData = $cachedData; + + $this->assertFalse($this->cache->inCache('bar.txt')); + Filesystem::file_put_contents('bar.txt', 'asd'); + $this->assertTrue($this->cache->inCache('bar.txt')); + $cachedData = $this->cache->get('bar.txt'); + $this->assertEquals(3, $cachedData['size']); + $mtime = $cachedData['mtime']; + $cachedData = $this->cache->get(''); + $this->assertEquals(2 * $textSize + $imageSize + 2 * 3, $cachedData['size']); + $this->assertNotEquals($rootCachedData['etag'], $cachedData['etag']); + $this->assertGreaterThanOrEqual($rootCachedData['mtime'], $mtime); + } + + public function testDelete() { + $textSize = strlen("dummy file data\n"); + $imageSize = filesize(\OC::$SERVERROOT . '/core/img/logo.png'); + $rootCachedData = $this->cache->get(''); + $this->assertEquals(3 * $textSize + $imageSize, $rootCachedData['size']); + + $this->assertTrue($this->cache->inCache('foo.txt')); + Filesystem::unlink('foo.txt', 'asd'); + $this->assertFalse($this->cache->inCache('foo.txt')); + $cachedData = $this->cache->get(''); + $this->assertEquals(2 * $textSize + $imageSize, $cachedData['size']); + $this->assertNotEquals($rootCachedData['etag'], $cachedData['etag']); + $this->assertGreaterThanOrEqual($rootCachedData['mtime'], $cachedData['mtime']); + $rootCachedData = $cachedData; + + Filesystem::mkdir('bar_folder'); + $this->assertTrue($this->cache->inCache('bar_folder')); + $cachedData = $this->cache->get(''); + $this->assertNotEquals($rootCachedData['etag'], $cachedData['etag']); + $rootCachedData = $cachedData; + Filesystem::rmdir('bar_folder'); + $this->assertFalse($this->cache->inCache('bar_folder')); + $cachedData = $this->cache->get(''); + $this->assertNotEquals($rootCachedData['etag'], $cachedData['etag']); + $this->assertGreaterThanOrEqual($rootCachedData['mtime'], $cachedData['mtime']); + } + + public function testRename() { + $textSize = strlen("dummy file data\n"); + $imageSize = filesize(\OC::$SERVERROOT . '/core/img/logo.png'); + $rootCachedData = $this->cache->get(''); + $this->assertEquals(3 * $textSize + $imageSize, $rootCachedData['size']); + + $this->assertTrue($this->cache->inCache('foo.txt')); + $fooCachedData = $this->cache->get('foo.txt'); + $this->assertFalse($this->cache->inCache('bar.txt')); + Filesystem::rename('foo.txt', 'bar.txt'); + $this->assertFalse($this->cache->inCache('foo.txt')); + $this->assertTrue($this->cache->inCache('bar.txt')); + $cachedData = $this->cache->get('bar.txt'); + $this->assertNotEquals($fooCachedData['etag'], $cachedData['etag']); + $mtime = $cachedData['mtime']; + $cachedData = $this->cache->get(''); + $this->assertEquals(3 * $textSize + $imageSize, $cachedData['size']); + $this->assertNotEquals($rootCachedData['etag'], $cachedData['etag']); + $this->assertEquals($mtime, $cachedData['mtime']); + } +} diff --git a/tests/lib/files/cache/watcher.php b/tests/lib/files/cache/watcher.php new file mode 100644 index 00000000000..e8a1689cab0 --- /dev/null +++ b/tests/lib/files/cache/watcher.php @@ -0,0 +1,121 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Files\Cache; + +class Watcher extends \PHPUnit_Framework_TestCase { + + /** + * @var \OC\Files\Storage\Storage[] $storages; + */ + private $storages = array(); + + public function setUp() { + \OC\Files\Filesystem::clearMounts(); + } + + public function tearDown() { + foreach ($this->storages as $storage) { + $cache = $storage->getCache(); + $ids = $cache->getAll(); + $permissionsCache = $storage->getPermissionsCache(); + $permissionsCache->removeMultiple($ids, \OC_User::getUser()); + $cache->clear(); + } + } + + function testWatcher() { + $storage = $this->getTestStorage(); + $cache = $storage->getCache(); + $updater = $storage->getWatcher(); + + //set the mtime to the past so it can detect an mtime change + $cache->put('', array('mtime' => 10)); + + $this->assertTrue($cache->inCache('folder/bar.txt')); + $this->assertTrue($cache->inCache('folder/bar2.txt')); + + $this->assertFalse($cache->inCache('bar.test')); + $storage->file_put_contents('bar.test', 'foo'); + $updater->checkUpdate(''); + $this->assertTrue($cache->inCache('bar.test')); + $cachedData = $cache->get('bar.test'); + $this->assertEquals(3, $cachedData['size']); + + $cache->put('bar.test', array('mtime' => 10)); + $storage->file_put_contents('bar.test', 'test data'); + + $updater->checkUpdate('bar.test'); + $cachedData = $cache->get('bar.test'); + $this->assertEquals(9, $cachedData['size']); + + $cache->put('folder', array('mtime' => 10)); + + $storage->unlink('folder/bar2.txt'); + $updater->checkUpdate('folder'); + + $this->assertTrue($cache->inCache('folder/bar.txt')); + $this->assertFalse($cache->inCache('folder/bar2.txt')); + } + + public function testFileToFolder() { + $storage = $this->getTestStorage(); + $cache = $storage->getCache(); + $updater = $storage->getWatcher(); + + //set the mtime to the past so it can detect an mtime change + $cache->put('', array('mtime' => 10)); + + $storage->unlink('foo.txt'); + $storage->rename('folder', 'foo.txt'); + $updater->checkUpdate(''); + + $entry = $cache->get('foo.txt'); + $this->assertEquals(-1, $entry['size']); + $this->assertEquals('httpd/unix-directory', $entry['mimetype']); + $this->assertFalse($cache->inCache('folder')); + $this->assertFalse($cache->inCache('folder/bar.txt')); + + $storage = $this->getTestStorage(); + $cache = $storage->getCache(); + $updater = $storage->getWatcher(); + + //set the mtime to the past so it can detect an mtime change + $cache->put('foo.txt', array('mtime' => 10)); + + $storage->unlink('foo.txt'); + $storage->rename('folder', 'foo.txt'); + $updater->checkUpdate('foo.txt'); + + $entry = $cache->get('foo.txt'); + $this->assertEquals('httpd/unix-directory', $entry['mimetype']); + $this->assertTrue($cache->inCache('foo.txt/bar.txt')); + } + + /** + * @param bool $scan + * @return \OC\Files\Storage\Storage + */ + private function getTestStorage($scan = true) { + $storage = new \OC\Files\Storage\Temporary(array()); + $textData = "dummy file data\n"; + $imgData = file_get_contents(\OC::$SERVERROOT . '/core/img/logo.png'); + $storage->mkdir('folder'); + $storage->file_put_contents('foo.txt', $textData); + $storage->file_put_contents('foo.png', $imgData); + $storage->file_put_contents('folder/bar.txt', $textData); + $storage->file_put_contents('folder/bar2.txt', $textData); + + if ($scan) { + $scanner = $storage->getScanner(); + $scanner->scan(''); + } + $this->storages[] = $storage; + return $storage; + } +} diff --git a/tests/lib/files/filesystem.php b/tests/lib/files/filesystem.php new file mode 100644 index 00000000000..5837093fdd6 --- /dev/null +++ b/tests/lib/files/filesystem.php @@ -0,0 +1,110 @@ +<?php +/** + * ownCloud + * + * @author Robin Appelman + * @copyright 2012 Robin Appelman icewind@owncloud.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * 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 <http://www.gnu.org/licenses/>. + * + */ + +namespace Test\Files; + +class Filesystem extends \PHPUnit_Framework_TestCase { + /** + * @var array tmpDirs + */ + private $tmpDirs=array(); + + /** + * @return array + */ + private function getStorageData() { + $dir = \OC_Helper::tmpFolder(); + $this->tmpDirs[] = $dir; + return array('datadir' => $dir); + } + + public function tearDown() { + foreach ($this->tmpDirs as $dir) { + \OC_Helper::rmdirr($dir); + } + } + + public function setUp() { + \OC\Files\Filesystem::clearMounts(); + } + + public function testMount() { + \OC\Files\Filesystem::mount('\OC\Files\Storage\Local',self::getStorageData(),'/'); + $this->assertEquals('/',\OC\Files\Filesystem::getMountPoint('/')); + $this->assertEquals('/',\OC\Files\Filesystem::getMountPoint('/some/folder')); + list( , $internalPath)=\OC\Files\Filesystem::resolvePath('/'); + $this->assertEquals('',$internalPath); + list( , $internalPath)=\OC\Files\Filesystem::resolvePath('/some/folder'); + $this->assertEquals('some/folder',$internalPath); + + \OC\Files\Filesystem::mount('\OC\Files\Storage\Local',self::getStorageData(),'/some'); + $this->assertEquals('/',\OC\Files\Filesystem::getMountPoint('/')); + $this->assertEquals('/some/',\OC\Files\Filesystem::getMountPoint('/some/folder')); + $this->assertEquals('/some/',\OC\Files\Filesystem::getMountPoint('/some/')); + $this->assertEquals('/some/',\OC\Files\Filesystem::getMountPoint('/some')); + list( , $internalPath)=\OC\Files\Filesystem::resolvePath('/some/folder'); + $this->assertEquals('folder',$internalPath); + } + + public function testNormalize() { + $this->assertEquals('/path', \OC\Files\Filesystem::normalizePath('/path/')); + $this->assertEquals('/path/', \OC\Files\Filesystem::normalizePath('/path/', false)); + $this->assertEquals('/path', \OC\Files\Filesystem::normalizePath('path')); + $this->assertEquals('/path', \OC\Files\Filesystem::normalizePath('\path')); + $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('/foo//bar/')); + $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('/foo////bar')); + if (class_exists('Normalizer')) { + $this->assertEquals("/foo/bar\xC3\xBC", \OC\Files\Filesystem::normalizePath("/foo/baru\xCC\x88")); + } + } + + public function testHooks() { + if(\OC\Files\Filesystem::getView()){ + $user = \OC_User::getUser(); + }else{ + $user=uniqid(); + \OC\Files\Filesystem::init('/'.$user.'/files'); + } + \OC_Hook::clear('OC_Filesystem'); + \OC_Hook::connect('OC_Filesystem', 'post_write', $this, 'dummyHook'); + + \OC\Files\Filesystem::mount('OC\Files\Storage\Temporary', array(), '/'); + + $rootView=new \OC\Files\View(''); + $rootView->mkdir('/'.$user); + $rootView->mkdir('/'.$user.'/files'); + + \OC\Files\Filesystem::file_put_contents('/foo', 'foo'); + \OC\Files\Filesystem::mkdir('/bar'); + \OC\Files\Filesystem::file_put_contents('/bar//foo', 'foo'); + + $tmpFile = \OC_Helper::tmpFile(); + file_put_contents($tmpFile, 'foo'); + $fh = fopen($tmpFile, 'r'); + \OC\Files\Filesystem::file_put_contents('/bar//foo', $fh); + } + + public function dummyHook($arguments) { + $path = $arguments['path']; + $this->assertEquals($path, \OC\Files\Filesystem::normalizePath($path)); //the path passed to the hook should already be normalized + } +} diff --git a/tests/lib/files/mount.php b/tests/lib/files/mount.php new file mode 100644 index 00000000000..f223f0f6c53 --- /dev/null +++ b/tests/lib/files/mount.php @@ -0,0 +1,41 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Files; + +use \OC\Files\Storage\Temporary; + +class Mount extends \PHPUnit_Framework_TestCase { + public function setup() { + \OC_Util::setupFS(); + \OC\Files\Mount::clear(); + } + + public function testFind() { + $this->assertNull(\OC\Files\Mount::find('/')); + + $rootMount = new \OC\Files\Mount(new Temporary(array()), '/'); + $this->assertEquals($rootMount, \OC\Files\Mount::find('/')); + $this->assertEquals($rootMount, \OC\Files\Mount::find('/foo/bar')); + + $storage = new Temporary(array()); + $mount = new \OC\Files\Mount($storage, '/foo'); + $this->assertEquals($rootMount, \OC\Files\Mount::find('/')); + $this->assertEquals($mount, \OC\Files\Mount::find('/foo/bar')); + + $this->assertEquals(1, count(\OC\Files\Mount::findIn('/'))); + new \OC\Files\Mount(new Temporary(array()), '/bar'); + $this->assertEquals(2, count(\OC\Files\Mount::findIn('/'))); + + $id = $mount->getStorageId(); + $this->assertEquals(array($mount), \OC\Files\Mount::findById($id)); + + $mount2 = new \OC\Files\Mount($storage, '/foo/bar'); + $this->assertEquals(array($mount, $mount2), \OC\Files\Mount::findById($id)); + } +} diff --git a/tests/lib/filestorage/commontest.php b/tests/lib/files/storage/commontest.php index 6719fcff4e8..744d4608420 100644 --- a/tests/lib/filestorage/commontest.php +++ b/tests/lib/files/storage/commontest.php @@ -20,7 +20,9 @@ * */ -class Test_Filestorage_CommonTest extends Test_FileStorage { +namespace Test\Files\Storage; + +class CommonTest extends Storage { /** * @var string tmpDir */ @@ -30,11 +32,10 @@ class Test_Filestorage_CommonTest extends Test_FileStorage { if(!file_exists($this->tmpDir)) { mkdir($this->tmpDir); } - $this->instance=new OC_Filestorage_CommonTest(array('datadir'=>$this->tmpDir)); + $this->instance=new \OC\Files\Storage\CommonTest(array('datadir'=>$this->tmpDir)); } public function tearDown() { - OC_Helper::rmdirr($this->tmpDir); + \OC_Helper::rmdirr($this->tmpDir); } } - diff --git a/tests/lib/filestorage/local.php b/tests/lib/files/storage/local.php index d7d71e8f372..1aad138aa33 100644 --- a/tests/lib/filestorage/local.php +++ b/tests/lib/files/storage/local.php @@ -20,18 +20,20 @@ * */ -class Test_Filestorage_Local extends Test_FileStorage { +namespace Test\Files\Storage; + +class Local extends Storage { /** * @var string tmpDir */ private $tmpDir; public function setUp() { - $this->tmpDir=OC_Helper::tmpFolder(); - $this->instance=new OC_Filestorage_Local(array('datadir'=>$this->tmpDir)); + $this->tmpDir=\OC_Helper::tmpFolder(); + $this->instance=new \OC\Files\Storage\Local(array('datadir'=>$this->tmpDir)); } public function tearDown() { - OC_Helper::rmdirr($this->tmpDir); + \OC_Helper::rmdirr($this->tmpDir); } } diff --git a/tests/lib/filestorage.php b/tests/lib/files/storage/storage.php index e82a6f54e3d..781c0f92c92 100644 --- a/tests/lib/filestorage.php +++ b/tests/lib/files/storage/storage.php @@ -20,9 +20,11 @@ * */ -abstract class Test_FileStorage extends UnitTestCase { +namespace Test\Files\Storage; + +abstract class Storage extends \PHPUnit_Framework_TestCase { /** - * @var OC_Filestorage instance + * @var \OC\Files\Storage\Storage instance */ protected $instance; @@ -34,9 +36,9 @@ abstract class Test_FileStorage extends UnitTestCase { $this->assertTrue($this->instance->isReadable('/'), 'Root folder is not readable'); $this->assertTrue($this->instance->is_dir('/'), 'Root folder is not a directory'); $this->assertFalse($this->instance->is_file('/'), 'Root folder is a file'); - $this->assertEqual('dir', $this->instance->filetype('/')); + $this->assertEquals('dir', $this->instance->filetype('/')); - //without this, any further testing would be useless, not an acutal requirement for filestorage though + //without this, any further testing would be useless, not an actual requirement for filestorage though $this->assertTrue($this->instance->isUpdatable('/'), 'Root folder is not writable'); } @@ -48,8 +50,8 @@ abstract class Test_FileStorage extends UnitTestCase { $this->assertTrue($this->instance->file_exists('/folder')); $this->assertTrue($this->instance->is_dir('/folder')); $this->assertFalse($this->instance->is_file('/folder')); - $this->assertEqual('dir', $this->instance->filetype('/folder')); - $this->assertEqual(0, $this->instance->filesize('/folder')); + $this->assertEquals('dir', $this->instance->filetype('/folder')); + $this->assertEquals(0, $this->instance->filesize('/folder')); $this->assertTrue($this->instance->isReadable('/folder')); $this->assertTrue($this->instance->isUpdatable('/folder')); @@ -60,7 +62,7 @@ abstract class Test_FileStorage extends UnitTestCase { $content[] = $file; } } - $this->assertEqual(array('folder'), $content); + $this->assertEquals(array('folder'), $content); $this->assertFalse($this->instance->mkdir('/folder')); //cant create existing folders $this->assertTrue($this->instance->rmdir('/folder')); @@ -76,65 +78,65 @@ abstract class Test_FileStorage extends UnitTestCase { $content[] = $file; } } - $this->assertEqual(array(), $content); + $this->assertEquals(array(), $content); } /** * test the various uses of file_get_contents and file_put_contents */ public function testGetPutContents() { - $sourceFile = OC::$SERVERROOT . '/tests/data/lorem.txt'; + $sourceFile = \OC::$SERVERROOT . '/tests/data/lorem.txt'; $sourceText = file_get_contents($sourceFile); //fill a file with string data $this->instance->file_put_contents('/lorem.txt', $sourceText); $this->assertFalse($this->instance->is_dir('/lorem.txt')); - $this->assertEqual($sourceText, $this->instance->file_get_contents('/lorem.txt'), 'data returned from file_get_contents is not equal to the source data'); + $this->assertEquals($sourceText, $this->instance->file_get_contents('/lorem.txt'), 'data returned from file_get_contents is not equal to the source data'); //empty the file $this->instance->file_put_contents('/lorem.txt', ''); - $this->assertEqual('', $this->instance->file_get_contents('/lorem.txt'), 'file not emptied'); + $this->assertEquals('', $this->instance->file_get_contents('/lorem.txt'), 'file not emptied'); } /** * test various known mimetypes */ public function testMimeType() { - $this->assertEqual('httpd/unix-directory', $this->instance->getMimeType('/')); - $this->assertEqual(false, $this->instance->getMimeType('/non/existing/file')); + $this->assertEquals('httpd/unix-directory', $this->instance->getMimeType('/')); + $this->assertEquals(false, $this->instance->getMimeType('/non/existing/file')); - $textFile = OC::$SERVERROOT . '/tests/data/lorem.txt'; + $textFile = \OC::$SERVERROOT . '/tests/data/lorem.txt'; $this->instance->file_put_contents('/lorem.txt', file_get_contents($textFile, 'r')); - $this->assertEqual('text/plain', $this->instance->getMimeType('/lorem.txt')); + $this->assertEquals('text/plain', $this->instance->getMimeType('/lorem.txt')); - $pngFile = OC::$SERVERROOT . '/tests/data/logo-wide.png'; + $pngFile = \OC::$SERVERROOT . '/tests/data/logo-wide.png'; $this->instance->file_put_contents('/logo-wide.png', file_get_contents($pngFile, 'r')); - $this->assertEqual('image/png', $this->instance->getMimeType('/logo-wide.png')); + $this->assertEquals('image/png', $this->instance->getMimeType('/logo-wide.png')); - $svgFile = OC::$SERVERROOT . '/tests/data/logo-wide.svg'; + $svgFile = \OC::$SERVERROOT . '/tests/data/logo-wide.svg'; $this->instance->file_put_contents('/logo-wide.svg', file_get_contents($svgFile, 'r')); - $this->assertEqual('image/svg+xml', $this->instance->getMimeType('/logo-wide.svg')); + $this->assertEquals('image/svg+xml', $this->instance->getMimeType('/logo-wide.svg')); } public function testCopyAndMove() { - $textFile = OC::$SERVERROOT . '/tests/data/lorem.txt'; + $textFile = \OC::$SERVERROOT . '/tests/data/lorem.txt'; $this->instance->file_put_contents('/source.txt', file_get_contents($textFile)); $this->instance->copy('/source.txt', '/target.txt'); $this->assertTrue($this->instance->file_exists('/target.txt')); - $this->assertEqual($this->instance->file_get_contents('/source.txt'), $this->instance->file_get_contents('/target.txt')); + $this->assertEquals($this->instance->file_get_contents('/source.txt'), $this->instance->file_get_contents('/target.txt')); $this->instance->rename('/source.txt', '/target2.txt'); $this->assertTrue($this->instance->file_exists('/target2.txt')); $this->assertFalse($this->instance->file_exists('/source.txt')); - $this->assertEqual(file_get_contents($textFile), $this->instance->file_get_contents('/target.txt')); + $this->assertEquals(file_get_contents($textFile), $this->instance->file_get_contents('/target.txt')); } public function testLocal() { - $textFile = OC::$SERVERROOT . '/tests/data/lorem.txt'; + $textFile = \OC::$SERVERROOT . '/tests/data/lorem.txt'; $this->instance->file_put_contents('/lorem.txt', file_get_contents($textFile)); $localFile = $this->instance->getLocalFile('/lorem.txt'); $this->assertTrue(file_exists($localFile)); - $this->assertEqual(file_get_contents($localFile), file_get_contents($textFile)); + $this->assertEquals(file_get_contents($localFile), file_get_contents($textFile)); $this->instance->mkdir('/folder'); $this->instance->file_put_contents('/folder/lorem.txt', file_get_contents($textFile)); @@ -145,13 +147,13 @@ abstract class Test_FileStorage extends UnitTestCase { $this->assertTrue(is_dir($localFolder)); $this->assertTrue(file_exists($localFolder . '/lorem.txt')); - $this->assertEqual(file_get_contents($localFolder . '/lorem.txt'), file_get_contents($textFile)); - $this->assertEqual(file_get_contents($localFolder . '/bar.txt'), 'asd'); - $this->assertEqual(file_get_contents($localFolder . '/recursive/file.txt'), 'foo'); + $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'); } public function testStat() { - $textFile = OC::$SERVERROOT . '/tests/data/lorem.txt'; + $textFile = \OC::$SERVERROOT . '/tests/data/lorem.txt'; $ctimeStart = time(); $this->instance->file_put_contents('/lorem.txt', file_get_contents($textFile)); $this->assertTrue($this->instance->isReadable('/lorem.txt')); @@ -162,12 +164,12 @@ abstract class Test_FileStorage extends UnitTestCase { $this->assertTrue(($ctimeStart - 1) <= $mTime); $this->assertTrue($mTime <= ($ctimeEnd + 1)); - $this->assertEqual(filesize($textFile), $this->instance->filesize('/lorem.txt')); + $this->assertEquals(filesize($textFile), $this->instance->filesize('/lorem.txt')); $stat = $this->instance->stat('/lorem.txt'); //only size and mtime are requered in the result - $this->assertEqual($stat['size'], $this->instance->filesize('/lorem.txt')); - $this->assertEqual($stat['mtime'], $mTime); + $this->assertEquals($stat['size'], $this->instance->filesize('/lorem.txt')); + $this->assertEquals($stat['mtime'], $mTime); $mtimeStart = time(); $supportsTouch = $this->instance->touch('/lorem.txt'); @@ -181,7 +183,7 @@ abstract class Test_FileStorage extends UnitTestCase { if ($this->instance->touch('/lorem.txt', 100) !== false) { $mTime = $this->instance->filemtime('/lorem.txt'); - $this->assertEqual($mTime, 100); + $this->assertEquals($mTime, 100); } } @@ -200,20 +202,20 @@ abstract class Test_FileStorage extends UnitTestCase { } public function testSearch() { - $textFile = OC::$SERVERROOT . '/tests/data/lorem.txt'; + $textFile = \OC::$SERVERROOT . '/tests/data/lorem.txt'; $this->instance->file_put_contents('/lorem.txt', file_get_contents($textFile, 'r')); - $pngFile = OC::$SERVERROOT . '/tests/data/logo-wide.png'; + $pngFile = \OC::$SERVERROOT . '/tests/data/logo-wide.png'; $this->instance->file_put_contents('/logo-wide.png', file_get_contents($pngFile, 'r')); - $svgFile = OC::$SERVERROOT . '/tests/data/logo-wide.svg'; + $svgFile = \OC::$SERVERROOT . '/tests/data/logo-wide.svg'; $this->instance->file_put_contents('/logo-wide.svg', file_get_contents($svgFile, 'r')); $result = $this->instance->search('logo'); - $this->assertEqual(2, count($result)); + $this->assertEquals(2, count($result)); $this->assertContains('/logo-wide.svg', $result); $this->assertContains('/logo-wide.png', $result); } public function testFOpen() { - $textFile = OC::$SERVERROOT . '/tests/data/lorem.txt'; + $textFile = \OC::$SERVERROOT . '/tests/data/lorem.txt'; $fh = @$this->instance->fopen('foo', 'r'); if ($fh) { @@ -229,6 +231,6 @@ abstract class Test_FileStorage extends UnitTestCase { $fh = $this->instance->fopen('foo', 'r'); $content = stream_get_contents($fh); - $this->assertEqual(file_get_contents($textFile), $content); + $this->assertEquals(file_get_contents($textFile), $content); } } diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php new file mode 100644 index 00000000000..a064e44f3ef --- /dev/null +++ b/tests/lib/files/view.php @@ -0,0 +1,251 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. */ + +namespace Test\Files; + +class View extends \PHPUnit_Framework_TestCase { + /** + * @var \OC\Files\Storage\Storage[] $storages; + */ + private $storages = array(); + + public function setUp() { + \OC\Files\Filesystem::clearMounts(); + } + + public function tearDown() { + foreach ($this->storages as $storage) { + $cache = $storage->getCache(); + $ids = $cache->getAll(); + $permissionsCache = $storage->getPermissionsCache(); + $permissionsCache->removeMultiple($ids, \OC_User::getUser()); + $cache->clear(); + } + } + + public function testCacheAPI() { + $storage1 = $this->getTestStorage(); + $storage2 = $this->getTestStorage(); + $storage3 = $this->getTestStorage(); + \OC\Files\Filesystem::mount($storage1, array(), '/'); + \OC\Files\Filesystem::mount($storage2, array(), '/substorage'); + \OC\Files\Filesystem::mount($storage3, array(), '/folder/anotherstorage'); + $textSize = strlen("dummy file data\n"); + $imageSize = filesize(\OC::$SERVERROOT . '/core/img/logo.png'); + $storageSize = $textSize * 2 + $imageSize; + + $rootView = new \OC\Files\View(''); + + $cachedData = $rootView->getFileInfo('/foo.txt'); + $this->assertEquals($textSize, $cachedData['size']); + $this->assertEquals('text/plain', $cachedData['mimetype']); + $this->assertNotEquals(-1, $cachedData['permissions']); + + $cachedData = $rootView->getFileInfo('/'); + $this->assertEquals($storageSize * 3, $cachedData['size']); + $this->assertEquals('httpd/unix-directory', $cachedData['mimetype']); + + $cachedData = $rootView->getFileInfo('/folder'); + $this->assertEquals($storageSize + $textSize, $cachedData['size']); + $this->assertEquals('httpd/unix-directory', $cachedData['mimetype']); + + $folderData = $rootView->getDirectoryContent('/'); + /** + * expected entries: + * folder + * foo.png + * foo.txt + * substorage + */ + $this->assertEquals(4, count($folderData)); + $this->assertEquals('folder', $folderData[0]['name']); + $this->assertEquals('foo.png', $folderData[1]['name']); + $this->assertEquals('foo.txt', $folderData[2]['name']); + $this->assertEquals('substorage', $folderData[3]['name']); + + $this->assertEquals($storageSize + $textSize, $folderData[0]['size']); + $this->assertEquals($imageSize, $folderData[1]['size']); + $this->assertEquals($textSize, $folderData[2]['size']); + $this->assertEquals($storageSize, $folderData[3]['size']); + + $folderData = $rootView->getDirectoryContent('/substorage'); + /** + * expected entries: + * folder + * foo.png + * foo.txt + */ + $this->assertEquals(3, count($folderData)); + $this->assertEquals('folder', $folderData[0]['name']); + $this->assertEquals('foo.png', $folderData[1]['name']); + $this->assertEquals('foo.txt', $folderData[2]['name']); + + $folderView = new \OC\Files\View('/folder'); + $this->assertEquals($rootView->getFileInfo('/folder'), $folderView->getFileInfo('/')); + + $cachedData = $rootView->getFileInfo('/foo.txt'); + $this->assertFalse($cachedData['encrypted']); + $id = $rootView->putFileInfo('/foo.txt', array('encrypted' => true)); + $cachedData = $rootView->getFileInfo('/foo.txt'); + $this->assertTrue($cachedData['encrypted']); + $this->assertEquals($cachedData['fileid'], $id); + + $this->assertFalse($rootView->getFileInfo('/non/existing')); + $this->assertEquals(array(), $rootView->getDirectoryContent('/non/existing')); + } + + function testGetPath() { + $storage1 = $this->getTestStorage(); + $storage2 = $this->getTestStorage(); + $storage3 = $this->getTestStorage(); + \OC\Files\Filesystem::mount($storage1, array(), '/'); + \OC\Files\Filesystem::mount($storage2, array(), '/substorage'); + \OC\Files\Filesystem::mount($storage3, array(), '/folder/anotherstorage'); + + $rootView = new \OC\Files\View(''); + + $cachedData = $rootView->getFileInfo('/foo.txt'); + $id1 = $cachedData['fileid']; + $this->assertEquals('/foo.txt', $rootView->getPath($id1)); + + $cachedData = $rootView->getFileInfo('/substorage/foo.txt'); + $id2 = $cachedData['fileid']; + $this->assertEquals('/substorage/foo.txt', $rootView->getPath($id2)); + + $folderView = new \OC\Files\View('/substorage'); + $this->assertEquals('/foo.txt', $folderView->getPath($id2)); + $this->assertNull($folderView->getPath($id1)); + } + + function testMountPointOverwrite() { + $storage1 = $this->getTestStorage(false); + $storage2 = $this->getTestStorage(); + $storage1->mkdir('substorage'); + \OC\Files\Filesystem::mount($storage1, array(), '/'); + \OC\Files\Filesystem::mount($storage2, array(), '/substorage'); + + $rootView = new \OC\Files\View(''); + $folderContent = $rootView->getDirectoryContent('/'); + $this->assertEquals(4, count($folderContent)); + } + + function testCacheIncompleteFolder() { + $storage1 = $this->getTestStorage(false); + \OC\Files\Filesystem::mount($storage1, array(), '/'); + $rootView = new \OC\Files\View(''); + + $entries = $rootView->getDirectoryContent('/'); + $this->assertEquals(3, count($entries)); + + // /folder will already be in the cache but not scanned + $entries = $rootView->getDirectoryContent('/folder'); + $this->assertEquals(1, count($entries)); + } + + public function testAutoScan() { + $storage1 = $this->getTestStorage(false); + $storage2 = $this->getTestStorage(false); + \OC\Files\Filesystem::mount($storage1, array(), '/'); + \OC\Files\Filesystem::mount($storage2, array(), '/substorage'); + $textSize = strlen("dummy file data\n"); + + $rootView = new \OC\Files\View(''); + + $cachedData = $rootView->getFileInfo('/'); + $this->assertEquals('httpd/unix-directory', $cachedData['mimetype']); + $this->assertEquals(-1, $cachedData['size']); + + $folderData = $rootView->getDirectoryContent('/substorage/folder'); + $this->assertEquals('text/plain', $folderData[0]['mimetype']); + $this->assertEquals($textSize, $folderData[0]['size']); + } + + function testSearch() { + $storage1 = $this->getTestStorage(); + $storage2 = $this->getTestStorage(); + $storage3 = $this->getTestStorage(); + \OC\Files\Filesystem::mount($storage1, array(), '/'); + \OC\Files\Filesystem::mount($storage2, array(), '/substorage'); + \OC\Files\Filesystem::mount($storage3, array(), '/folder/anotherstorage'); + + $rootView = new \OC\Files\View(''); + + $results = $rootView->search('foo'); + $this->assertEquals(6, count($results)); + $paths = array(); + foreach ($results as $result) { + $this->assertEquals($result['path'], \OC\Files\Filesystem::normalizePath($result['path'])); + $paths[] = $result['path']; + } + $this->assertContains('/foo.txt', $paths); + $this->assertContains('/foo.png', $paths); + $this->assertContains('/substorage/foo.txt', $paths); + $this->assertContains('/substorage/foo.png', $paths); + $this->assertContains('/folder/anotherstorage/foo.txt', $paths); + $this->assertContains('/folder/anotherstorage/foo.png', $paths); + + $folderView = new \OC\Files\View('/folder'); + $results = $folderView->search('bar'); + $this->assertEquals(2, count($results)); + $paths = array(); + foreach ($results as $result) { + $paths[] = $result['path']; + } + $this->assertContains('/anotherstorage/folder/bar.txt', $paths); + $this->assertContains('/bar.txt', $paths); + + $results = $folderView->search('foo'); + $this->assertEquals(2, count($results)); + $paths = array(); + foreach ($results as $result) { + $paths[] = $result['path']; + } + $this->assertContains('/anotherstorage/foo.txt', $paths); + $this->assertContains('/anotherstorage/foo.png', $paths); + + $this->assertEquals(6, count($rootView->searchByMime('text'))); + $this->assertEquals(3, count($folderView->searchByMime('text'))); + } + + function testWatcher() { + $storage1 = $this->getTestStorage(); + \OC\Files\Filesystem::mount($storage1, array(), '/'); + + $rootView = new \OC\Files\View(''); + + $cachedData = $rootView->getFileInfo('foo.txt'); + $this->assertEquals(16, $cachedData['size']); + + $rootView->putFileInfo('foo.txt', array('mtime' => 10)); + $storage1->file_put_contents('foo.txt', 'foo'); + clearstatcache(); + + $cachedData = $rootView->getFileInfo('foo.txt'); + $this->assertEquals(3, $cachedData['size']); + } + + /** + * @param bool $scan + * @return \OC\Files\Storage\Storage + */ + private function getTestStorage($scan = true) { + $storage = new \OC\Files\Storage\Temporary(array()); + $textData = "dummy file data\n"; + $imgData = file_get_contents(\OC::$SERVERROOT . '/core/img/logo.png'); + $storage->mkdir('folder'); + $storage->file_put_contents('foo.txt', $textData); + $storage->file_put_contents('foo.png', $imgData); + $storage->file_put_contents('folder/bar.txt', $textData); + + if ($scan) { + $scanner = $storage->getScanner(); + $scanner->scan(''); + } + $this->storages[] = $storage; + return $storage; + } +} diff --git a/tests/lib/filesystem.php b/tests/lib/filesystem.php deleted file mode 100644 index 5cced4946d9..00000000000 --- a/tests/lib/filesystem.php +++ /dev/null @@ -1,139 +0,0 @@ -<?php -/** - * ownCloud - * - * @author Robin Appelman - * @copyright 2012 Robin Appelman icewind@owncloud.com - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * 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 <http://www.gnu.org/licenses/>. - * - */ - -class Test_Filesystem extends UnitTestCase { - /** - * @var array tmpDirs - */ - private $tmpDirs = array(); - - /** - * @return array - */ - private function getStorageData() { - $dir = OC_Helper::tmpFolder(); - $this->tmpDirs[] = $dir; - return array('datadir' => $dir); - } - - public function tearDown() { - foreach ($this->tmpDirs as $dir) { - OC_Helper::rmdirr($dir); - } - } - - public function setUp() { - OC_Filesystem::clearMounts(); - } - - public function testMount() { - OC_Filesystem::mount('OC_Filestorage_Local', self::getStorageData(), '/'); - $this->assertEqual('/', OC_Filesystem::getMountPoint('/')); - $this->assertEqual('/', OC_Filesystem::getMountPoint('/some/folder')); - $this->assertEqual('', OC_Filesystem::getInternalPath('/')); - $this->assertEqual('some/folder', OC_Filesystem::getInternalPath('/some/folder')); - - OC_Filesystem::mount('OC_Filestorage_Local', self::getStorageData(), '/some'); - $this->assertEqual('/', OC_Filesystem::getMountPoint('/')); - $this->assertEqual('/some/', OC_Filesystem::getMountPoint('/some/folder')); - $this->assertEqual('/some/', OC_Filesystem::getMountPoint('/some/')); - $this->assertEqual('/', OC_Filesystem::getMountPoint('/some')); - $this->assertEqual('folder', OC_Filesystem::getInternalPath('/some/folder')); - } - - public function testNormalize() { - $this->assertEqual('/path', OC_Filesystem::normalizePath('/path/')); - $this->assertEqual('/path/', OC_Filesystem::normalizePath('/path/', false)); - $this->assertEqual('/path', OC_Filesystem::normalizePath('path')); - $this->assertEqual('/path', OC_Filesystem::normalizePath('\path')); - $this->assertEqual('/foo/bar', OC_Filesystem::normalizePath('/foo//bar/')); - $this->assertEqual('/foo/bar', OC_Filesystem::normalizePath('/foo////bar')); - if (class_exists('Normalizer')) { - $this->assertEqual("/foo/bar\xC3\xBC", OC_Filesystem::normalizePath("/foo/baru\xCC\x88")); - } - } - - public function testBlacklist() { - OC_Hook::clear('OC_Filesystem'); - OC::registerFilesystemHooks(); - - $run = true; - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_write, - array( - OC_Filesystem::signal_param_path => '/test/.htaccess', - OC_Filesystem::signal_param_run => &$run - ) - ); - $this->assertFalse($run); - - if (OC_Filesystem::getView()) { - $user = OC_User::getUser(); - } else { - $user = uniqid(); - OC_Filesystem::init('/' . $user . '/files'); - } - - OC_Filesystem::mount('OC_Filestorage_Temporary', array(), '/'); - - $rootView = new OC_FilesystemView(''); - $rootView->mkdir('/' . $user); - $rootView->mkdir('/' . $user . '/files'); - - $this->assertFalse($rootView->file_put_contents('/.htaccess', 'foo')); - $this->assertFalse(OC_Filesystem::file_put_contents('/.htaccess', 'foo')); - $fh = fopen(__FILE__, 'r'); - $this->assertFalse(OC_Filesystem::file_put_contents('/.htaccess', $fh)); - } - - public function testHooks() { - if (OC_Filesystem::getView()) { - $user = OC_User::getUser(); - } else { - $user = uniqid(); - OC_Filesystem::init('/' . $user . '/files'); - } - OC_Hook::clear('OC_Filesystem'); - OC_Hook::connect('OC_Filesystem', 'post_write', $this, 'dummyHook'); - - OC_Filesystem::mount('OC_Filestorage_Temporary', array(), '/'); - - $rootView = new OC_FilesystemView(''); - $rootView->mkdir('/' . $user); - $rootView->mkdir('/' . $user . '/files'); - - OC_Filesystem::file_put_contents('/foo', 'foo'); - OC_Filesystem::mkdir('/bar'); - OC_Filesystem::file_put_contents('/bar//foo', 'foo'); - - $tmpFile = OC_Helper::tmpFile(); - file_put_contents($tmpFile, 'foo'); - $fh = fopen($tmpFile, 'r'); - OC_Filesystem::file_put_contents('/bar//foo', $fh); - } - - public function dummyHook($arguments) { - $path = $arguments['path']; - $this->assertEqual($path, OC_Filesystem::normalizePath($path)); //the path passed to the hook should already be normalized - } -} diff --git a/tests/lib/geo.php b/tests/lib/geo.php index d4951ee79e7..82e61608687 100644 --- a/tests/lib/geo.php +++ b/tests/lib/geo.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class Test_Geo extends UnitTestCase { +class Test_Geo extends PHPUnit_Framework_TestCase { function testTimezone() { $result = OC_Geo::timezone(3, 3); $expected = 'Africa/Porto-Novo'; diff --git a/tests/lib/group.php b/tests/lib/group.php index 28264b0f168..9128bd7ddce 100644 --- a/tests/lib/group.php +++ b/tests/lib/group.php @@ -22,7 +22,7 @@ * */ -class Test_Group extends UnitTestCase { +class Test_Group extends PHPUnit_Framework_TestCase { function setUp() { OC_Group::clearBackends(); } @@ -43,24 +43,24 @@ class Test_Group extends UnitTestCase { $this->assertFalse(OC_Group::inGroup($user1, $group2)); $this->assertFalse(OC_Group::inGroup($user2, $group2)); - $this->assertTrue(OC_Group::addToGroup($user1, $group1)); + $this->assertTrue((bool)OC_Group::addToGroup($user1, $group1)); $this->assertTrue(OC_Group::inGroup($user1, $group1)); $this->assertFalse(OC_Group::inGroup($user2, $group1)); $this->assertFalse(OC_Group::inGroup($user1, $group2)); $this->assertFalse(OC_Group::inGroup($user2, $group2)); - $this->assertFalse(OC_Group::addToGroup($user1, $group1)); + $this->assertFalse((bool)OC_Group::addToGroup($user1, $group1)); - $this->assertEqual(array($user1), OC_Group::usersInGroup($group1)); - $this->assertEqual(array(), OC_Group::usersInGroup($group2)); + $this->assertEquals(array($user1), OC_Group::usersInGroup($group1)); + $this->assertEquals(array(), OC_Group::usersInGroup($group2)); - $this->assertEqual(array($group1), OC_Group::getUserGroups($user1)); - $this->assertEqual(array(), OC_Group::getUserGroups($user2)); + $this->assertEquals(array($group1), OC_Group::getUserGroups($user1)); + $this->assertEquals(array(), OC_Group::getUserGroups($user2)); OC_Group::deleteGroup($group1); - $this->assertEqual(array(), OC_Group::getUserGroups($user1)); - $this->assertEqual(array(), OC_Group::usersInGroup($group1)); + $this->assertEquals(array(), OC_Group::getUserGroups($user1)); + $this->assertEquals(array(), OC_Group::usersInGroup($group1)); $this->assertFalse(OC_Group::inGroup($user1, $group1)); } @@ -69,7 +69,7 @@ class Test_Group extends UnitTestCase { OC_Group::useBackend(new OC_Group_Dummy()); $emptyGroup = null; - $this->assertEqual(false, OC_Group::createGroup($emptyGroup)); + $this->assertEquals(false, OC_Group::createGroup($emptyGroup)); } @@ -80,8 +80,8 @@ class Test_Group extends UnitTestCase { $groupCopy = $group; - $this->assertEqual(false, OC_Group::createGroup($groupCopy)); - $this->assertEqual(array($group), OC_Group::getGroups()); + $this->assertEquals(false, OC_Group::createGroup($groupCopy)); + $this->assertEquals(array($group), OC_Group::getGroups()); } @@ -90,8 +90,8 @@ class Test_Group extends UnitTestCase { $adminGroup = 'admin'; OC_Group::createGroup($adminGroup); - $this->assertEqual(false, OC_Group::deleteGroup($adminGroup)); - $this->assertEqual(array($adminGroup), OC_Group::getGroups()); + $this->assertEquals(false, OC_Group::deleteGroup($adminGroup)); + $this->assertEquals(array($adminGroup), OC_Group::getGroups()); } @@ -100,8 +100,8 @@ class Test_Group extends UnitTestCase { $groupNonExistent = 'notExistent'; $user = uniqid(); - $this->assertEqual(false, OC_Group::addToGroup($user, $groupNonExistent)); - $this->assertEqual(array(), OC_Group::getGroups()); + $this->assertEquals(false, OC_Group::addToGroup($user, $groupNonExistent)); + $this->assertEquals(array(), OC_Group::getGroups()); } @@ -122,7 +122,7 @@ class Test_Group extends UnitTestCase { OC_Group::addToGroup($user3, $group1); OC_Group::addToGroup($user3, $group2); - $this->assertEqual(array($user1, $user2, $user3), + $this->assertEquals(array($user1, $user2, $user3), OC_Group::usersInGroups(array($group1, $group2, $group3))); // FIXME: needs more parameter variation @@ -141,16 +141,16 @@ class Test_Group extends UnitTestCase { OC_Group::createGroup($group1); //groups should be added to the first registered backend - $this->assertEqual(array($group1), $backend1->getGroups()); - $this->assertEqual(array(), $backend2->getGroups()); + $this->assertEquals(array($group1), $backend1->getGroups()); + $this->assertEquals(array(), $backend2->getGroups()); - $this->assertEqual(array($group1), OC_Group::getGroups()); + $this->assertEquals(array($group1), OC_Group::getGroups()); $this->assertTrue(OC_Group::groupExists($group1)); $this->assertFalse(OC_Group::groupExists($group2)); $backend1->createGroup($group2); - $this->assertEqual(array($group1, $group2), OC_Group::getGroups()); + $this->assertEquals(array($group1, $group2), OC_Group::getGroups()); $this->assertTrue(OC_Group::groupExists($group1)); $this->assertTrue(OC_Group::groupExists($group2)); @@ -161,22 +161,22 @@ class Test_Group extends UnitTestCase { $this->assertFalse(OC_Group::inGroup($user2, $group1)); - $this->assertTrue(OC_Group::addToGroup($user1, $group1)); + $this->assertTrue((bool)OC_Group::addToGroup($user1, $group1)); $this->assertTrue(OC_Group::inGroup($user1, $group1)); $this->assertFalse(OC_Group::inGroup($user2, $group1)); $this->assertFalse($backend2->inGroup($user1, $group1)); - $this->assertFalse(OC_Group::addToGroup($user1, $group1)); + $this->assertFalse((bool)OC_Group::addToGroup($user1, $group1)); - $this->assertEqual(array($user1), OC_Group::usersInGroup($group1)); + $this->assertEquals(array($user1), OC_Group::usersInGroup($group1)); - $this->assertEqual(array($group1), OC_Group::getUserGroups($user1)); - $this->assertEqual(array(), OC_Group::getUserGroups($user2)); + $this->assertEquals(array($group1), OC_Group::getUserGroups($user1)); + $this->assertEquals(array(), OC_Group::getUserGroups($user2)); OC_Group::deleteGroup($group1); - $this->assertEqual(array(), OC_Group::getUserGroups($user1)); - $this->assertEqual(array(), OC_Group::usersInGroup($group1)); + $this->assertEquals(array(), OC_Group::getUserGroups($user1)); + $this->assertEquals(array(), OC_Group::usersInGroup($group1)); $this->assertFalse(OC_Group::inGroup($user1, $group1)); } } diff --git a/tests/lib/group/backend.php b/tests/lib/group/backend.php index f61abed5f29..d308232a78b 100644 --- a/tests/lib/group/backend.php +++ b/tests/lib/group/backend.php @@ -20,7 +20,7 @@ * */ -abstract class Test_Group_Backend extends UnitTestCase { +abstract class Test_Group_Backend extends PHPUnit_Framework_TestCase { /** * @var OC_Group_Backend $backend */ @@ -52,18 +52,18 @@ abstract class Test_Group_Backend extends UnitTestCase { $name2=$this->getGroupName(); $this->backend->createGroup($name1); $count=count($this->backend->getGroups())-$startCount; - $this->assertEqual(1, $count); + $this->assertEquals(1, $count); $this->assertTrue((array_search($name1, $this->backend->getGroups())!==false)); $this->assertFalse((array_search($name2, $this->backend->getGroups())!==false)); $this->backend->createGroup($name2); $count=count($this->backend->getGroups())-$startCount; - $this->assertEqual(2, $count); + $this->assertEquals(2, $count); $this->assertTrue((array_search($name1, $this->backend->getGroups())!==false)); $this->assertTrue((array_search($name2, $this->backend->getGroups())!==false)); $this->backend->deleteGroup($name2); $count=count($this->backend->getGroups())-$startCount; - $this->assertEqual(1, $count); + $this->assertEquals(1, $count); $this->assertTrue((array_search($name1, $this->backend->getGroups())!==false)); $this->assertFalse((array_search($name2, $this->backend->getGroups())!==false)); } @@ -91,15 +91,15 @@ abstract class Test_Group_Backend extends UnitTestCase { $this->assertFalse($this->backend->addToGroup($user1, $group1)); - $this->assertEqual(array($user1), $this->backend->usersInGroup($group1)); - $this->assertEqual(array(), $this->backend->usersInGroup($group2)); + $this->assertEquals(array($user1), $this->backend->usersInGroup($group1)); + $this->assertEquals(array(), $this->backend->usersInGroup($group2)); - $this->assertEqual(array($group1), $this->backend->getUserGroups($user1)); - $this->assertEqual(array(), $this->backend->getUserGroups($user2)); + $this->assertEquals(array($group1), $this->backend->getUserGroups($user1)); + $this->assertEquals(array(), $this->backend->getUserGroups($user2)); $this->backend->deleteGroup($group1); - $this->assertEqual(array(), $this->backend->getUserGroups($user1)); - $this->assertEqual(array(), $this->backend->usersInGroup($group1)); + $this->assertEquals(array(), $this->backend->getUserGroups($user1)); + $this->assertEquals(array(), $this->backend->usersInGroup($group1)); $this->assertFalse($this->backend->inGroup($user1, $group1)); } } diff --git a/tests/lib/helper.php b/tests/lib/helper.php index cfb9a799579..336e8f8b3c5 100644 --- a/tests/lib/helper.php +++ b/tests/lib/helper.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class Test_Helper extends UnitTestCase { +class Test_Helper extends PHPUnit_Framework_TestCase { function testHumanFileSize() { $result = OC_Helper::humanFileSize(0); diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php index 92f5d065cf2..ab43e47726b 100644 --- a/tests/lib/share/share.php +++ b/tests/lib/share/share.php @@ -19,7 +19,7 @@ * License along with this library. If not, see <http://www.gnu.org/licenses/>. */ -class Test_Share extends UnitTestCase { +class Test_Share extends PHPUnit_Framework_TestCase { protected $itemType; protected $userBackend; diff --git a/tests/lib/streamwrappers.php b/tests/lib/streamwrappers.php index 89b2785fca6..2237ee7d378 100644 --- a/tests/lib/streamwrappers.php +++ b/tests/lib/streamwrappers.php @@ -1,45 +1,45 @@ <?php /** -* ownCloud -* -* @author Robin Appelman -* @copyright 2012 Robin Appelman icewind@owncloud.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* 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 <http://www.gnu.org/licenses/>. -* -*/ + * ownCloud + * + * @author Robin Appelman + * @copyright 2012 Robin Appelman icewind@owncloud.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * 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 <http://www.gnu.org/licenses/>. + * + */ -class Test_StreamWrappers extends UnitTestCase { +class Test_StreamWrappers extends PHPUnit_Framework_TestCase { public function testFakeDir() { - $items=array('foo', 'bar'); - OC_FakeDirStream::$dirs['test']=$items; - $dh=opendir('fakedir://test'); - $result=array(); - while($file=readdir($dh)) { - $result[]=$file; + $items = array('foo', 'bar'); + \OC\Files\Stream\Dir::register('test', $items); + $dh = opendir('fakedir://test'); + $result = array(); + while ($file = readdir($dh)) { + $result[] = $file; $this->assertContains($file, $items); } - $this->assertEqual(count($items), count($result)); + $this->assertEquals(count($items), count($result)); } public function testStaticStream() { - $sourceFile=OC::$SERVERROOT.'/tests/data/lorem.txt'; - $staticFile='static://test'; + $sourceFile = OC::$SERVERROOT . '/tests/data/lorem.txt'; + $staticFile = 'static://test'; $this->assertFalse(file_exists($staticFile)); file_put_contents($staticFile, file_get_contents($sourceFile)); $this->assertTrue(file_exists($staticFile)); - $this->assertEqual(file_get_contents($sourceFile), file_get_contents($staticFile)); + $this->assertEquals(file_get_contents($sourceFile), file_get_contents($staticFile)); unlink($staticFile); clearstatcache(); $this->assertFalse(file_exists($staticFile)); @@ -47,32 +47,51 @@ class Test_StreamWrappers extends UnitTestCase { public function testCloseStream() { //ensure all basic stream stuff works - $sourceFile=OC::$SERVERROOT.'/tests/data/lorem.txt'; - $tmpFile=OC_Helper::TmpFile('.txt'); - $file='close://'.$tmpFile; + $sourceFile = OC::$SERVERROOT . '/tests/data/lorem.txt'; + $tmpFile = OC_Helper::TmpFile('.txt'); + $file = 'close://' . $tmpFile; $this->assertTrue(file_exists($file)); file_put_contents($file, file_get_contents($sourceFile)); - $this->assertEqual(file_get_contents($sourceFile), file_get_contents($file)); + $this->assertEquals(file_get_contents($sourceFile), file_get_contents($file)); unlink($file); clearstatcache(); $this->assertFalse(file_exists($file)); - + //test callback - $tmpFile=OC_Helper::TmpFile('.txt'); - $file='close://'.$tmpFile; - OC_CloseStreamWrapper::$callBacks[$tmpFile]=array('Test_StreamWrappers', 'closeCallBack'); - $fh=fopen($file, 'w'); + $tmpFile = OC_Helper::TmpFile('.txt'); + $file = 'close://' . $tmpFile; + \OC\Files\Stream\Close::registerCallback($tmpFile, array('Test_StreamWrappers', 'closeCallBack')); + $fh = fopen($file, 'w'); fwrite($fh, 'asd'); - try{ + try { fclose($fh); $this->fail('Expected exception'); - }catch(Exception $e) { - $path=$e->getMessage(); - $this->assertEqual($path, $tmpFile); + } catch (Exception $e) { + $path = $e->getMessage(); + $this->assertEquals($path, $tmpFile); } } public static function closeCallBack($path) { throw new Exception($path); } + + public function testOC() { + \OC\Files\Mount::clear(); + $storage = new \OC\Files\Storage\Temporary(array()); + $storage->file_put_contents('foo.txt', 'asd'); + new \OC\Files\Mount($storage, '/'); + + $this->assertTrue(file_exists('oc:///foo.txt')); + $this->assertEquals('asd', file_get_contents('oc:///foo.txt')); + $this->assertEquals(array('.', '..', 'foo.txt'), scandir('oc:///')); + + file_put_contents('oc:///bar.txt', 'qwerty'); + $this->assertEquals('qwerty', $storage->file_get_contents('bar.txt')); + $this->assertEquals(array('.', '..', 'bar.txt', 'foo.txt'), scandir('oc:///')); + $this->assertEquals('qwerty', file_get_contents('oc:///bar.txt')); + + unlink('oc:///foo.txt'); + $this->assertEquals(array('.', '..', 'bar.txt'), scandir('oc:///')); + } } diff --git a/tests/lib/template.php b/tests/lib/template.php index 2899c3512b2..6e88d4c07fc 100644 --- a/tests/lib/template.php +++ b/tests/lib/template.php @@ -22,7 +22,7 @@ OC::autoload('OC_Template'); -class Test_TemplateFunctions extends UnitTestCase { +class Test_TemplateFunctions extends PHPUnit_Framework_TestCase { public function testP() { // FIXME: do we need more testcases? @@ -31,7 +31,7 @@ class Test_TemplateFunctions extends UnitTestCase { p($htmlString); $result = ob_get_clean(); - $this->assertEqual("<script>alert('xss');</script>", $result); + $this->assertEquals("<script>alert('xss');</script>", $result); } public function testPNormalString() { @@ -40,7 +40,7 @@ class Test_TemplateFunctions extends UnitTestCase { p($normalString); $result = ob_get_clean(); - $this->assertEqual("This is a good string!", $result); + $this->assertEquals("This is a good string!", $result); } @@ -51,7 +51,7 @@ class Test_TemplateFunctions extends UnitTestCase { print_unescaped($htmlString); $result = ob_get_clean(); - $this->assertEqual($htmlString, $result); + $this->assertEquals($htmlString, $result); } public function testPrintUnescapedNormalString() { @@ -60,7 +60,7 @@ class Test_TemplateFunctions extends UnitTestCase { print_unescaped($normalString); $result = ob_get_clean(); - $this->assertEqual("This is a good string!", $result); + $this->assertEquals("This is a good string!", $result); } diff --git a/tests/lib/user/backend.php b/tests/lib/user/backend.php index 0b744770ea2..40674424c96 100644 --- a/tests/lib/user/backend.php +++ b/tests/lib/user/backend.php @@ -30,7 +30,7 @@ * For an example see /tests/lib/user/dummy.php */ -abstract class Test_User_Backend extends UnitTestCase { +abstract class Test_User_Backend extends PHPUnit_Framework_TestCase { /** * @var OC_User_Backend $backend */ @@ -53,18 +53,18 @@ abstract class Test_User_Backend extends UnitTestCase { $name2=$this->getUser(); $this->backend->createUser($name1, ''); $count=count($this->backend->getUsers())-$startCount; - $this->assertEqual(1, $count); + $this->assertEquals(1, $count); $this->assertTrue((array_search($name1, $this->backend->getUsers())!==false)); $this->assertFalse((array_search($name2, $this->backend->getUsers())!==false)); $this->backend->createUser($name2, ''); $count=count($this->backend->getUsers())-$startCount; - $this->assertEqual(2, $count); + $this->assertEquals(2, $count); $this->assertTrue((array_search($name1, $this->backend->getUsers())!==false)); $this->assertTrue((array_search($name2, $this->backend->getUsers())!==false)); $this->backend->deleteUser($name2); $count=count($this->backend->getUsers())-$startCount; - $this->assertEqual(1, $count); + $this->assertEquals(1, $count); $this->assertTrue((array_search($name1, $this->backend->getUsers())!==false)); $this->assertFalse((array_search($name2, $this->backend->getUsers())!==false)); } diff --git a/tests/lib/util.php b/tests/lib/util.php index 27635cb8055..ebff3c7381a 100644 --- a/tests/lib/util.php +++ b/tests/lib/util.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class Test_Util extends UnitTestCase { +class Test_Util extends PHPUnit_Framework_TestCase { // Constructor function Test_Util() { diff --git a/tests/lib/vcategories.php b/tests/lib/vcategories.php index 63516a063da..e79dd49870c 100644 --- a/tests/lib/vcategories.php +++ b/tests/lib/vcategories.php @@ -22,7 +22,7 @@ //require_once("../lib/template.php"); -class Test_VCategories extends UnitTestCase { +class Test_VCategories extends PHPUnit_Framework_TestCase { protected $objectType; protected $user; @@ -49,7 +49,7 @@ class Test_VCategories extends UnitTestCase { $catmgr = new OC_VCategories($this->objectType, $this->user, $defcategories); - $this->assertEqual(4, count($catmgr->categories())); + $this->assertEquals(4, count($catmgr->categories())); } public function testAddCategories() { @@ -59,25 +59,25 @@ class Test_VCategories extends UnitTestCase { foreach($categories as $category) { $result = $catmgr->add($category); - $this->assertTrue($result); + $this->assertTrue((bool)$result); } $this->assertFalse($catmgr->add('Family')); $this->assertFalse($catmgr->add('fAMILY')); - $this->assertEqual(4, count($catmgr->categories())); + $this->assertEquals(4, count($catmgr->categories())); } public function testdeleteCategories() { $defcategories = array('Friends', 'Family', 'Work', 'Other'); $catmgr = new OC_VCategories($this->objectType, $this->user, $defcategories); - $this->assertEqual(4, count($catmgr->categories())); + $this->assertEquals(4, count($catmgr->categories())); $catmgr->delete('family'); - $this->assertEqual(3, count($catmgr->categories())); + $this->assertEquals(3, count($catmgr->categories())); $catmgr->delete(array('Friends', 'Work', 'Other')); - $this->assertEqual(0, count($catmgr->categories())); + $this->assertEquals(0, count($catmgr->categories())); } @@ -90,8 +90,8 @@ class Test_VCategories extends UnitTestCase { $catmgr->addToCategory($id, 'Family'); } - $this->assertEqual(1, count($catmgr->categories())); - $this->assertEqual(9, count($catmgr->idsForCategory('Family'))); + $this->assertEquals(1, count($catmgr->categories())); + $this->assertEquals(9, count($catmgr->idsForCategory('Family'))); } /** @@ -110,8 +110,8 @@ class Test_VCategories extends UnitTestCase { $this->assertFalse(in_array($id, $catmgr->idsForCategory('Family'))); } - $this->assertEqual(1, count($catmgr->categories())); - $this->assertEqual(0, count($catmgr->idsForCategory('Family'))); + $this->assertEquals(1, count($catmgr->categories())); + $this->assertEquals(0, count($catmgr->idsForCategory('Family'))); } } |